2012年8月6日月曜日

Dovecotの再起動

Dovecotを再起動するには、


/etc/rc.d/init.d/dovecot restart

の他に

/bin/kill -HUP `cat /var/run/dovecot/master.pid 2>/dev/null`

というのもある。
ただし、後者の場合は、ログファイルが変わらないので注意が必要。


2012年8月3日金曜日

バーベキューコンロ用のテーブル


McAfee SiteAdvisorで「閲覧は危険を伴う可能性があります」と出る

勤めてる会社が管理する、サイト「メール配信(月500円~)・ステップメール NEO( http://www.mail-neo.com/ ) 」が、McAfee SiteAdvisorで「閲覧は危険を伴う可能性があります」と出るという報告を利用者から頂いた。


で原因を調べたんだけど、詳しいことが買いてないので、何もわからず。

ちょっと不安になったので、念のため、

http://safeweb.norton.com/
http://www.gred.jp/
http://www.unmaskparasites.com/
http://www.aguse.jp/

のような他のチェックサイトでも調べてみたけど、すべて安全と出ます。

McAfee SiteAdvisorのサイトを調べると、http://www.siteadvisor.com/webmasters/index.html
に「サイト評価に対するフィードバックを行う方法」という項目があったので、内容に従い、
メールで調査と依頼しました。

翌日、McAfeeから以下のようなメールを頂きました。

Hello,

We have received your request. It will be reviewed and processed by our team in the order it was received. Any adjustment made based on the review will be published in http://www.siteadvisor.com.

Sincerely,


Kyoko
McAfee GTI Customer Response Team - North America

とりあえず、処理を進めてくれる模様。
早く改善されるとよいんだけど。


追記。
その後、3日ほどしてから
https://www.siteadvisor.com/sites/www.mail-neo.com
を再度チェックしてみると、問題なしとなっていました。

無事、解決できてよかった。(^^)


エクステリアの水栓

レンガで作ってみました。
カエルとフクロウの蛇口がお気に入り。

2012年8月1日水曜日

CentOS 6.2 でpostfixにopendkimを導入する。


CentOS 6.2 でpostfixにopendkimを導入する。


1)
epelにあるopendkimを利用するので、epelが使えない場合は
epelを使えるようにする。

具体的には、CentOS 6.2で64bitなら以下のようなコマンドを発行する。

wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-5.noarch.rpm
rpm -ivh epel-release-6-5.noarch.rpm

2)
yumを使ってopendkimを導入する。

yum -y install opendkim

3)
opendkim用のプライベートキーを用意する。
例えば、ドメインが hoge.co.jp とすると以下のようなコマンドを発行する。

mkdir /etc/opendkim/keys/hoge.co.jp
/usr/bin/opendkim-genkey -D /etc/opendkim/keys/hoge.co.jp/ -d hoge.co.jp -s default
chown -R opendkim:opendkim /etc/opendkim/keys
mv /etc/opendkim/keys/hoge.co.jp/default.private /etc/opendkim/keys/hoge.co.jp/default


4)
opendkimまわりの設定ファイルを修正する。
関係するのは、

/etc/opendkim.conf
/etc/opendkim/KeyTable
/etc/opendkim/TrustedHosts
/etc/opendkim/SigningTable

の4つのファイル。
/etc/opendkim.confの変更内容は以下のとおり。

Mode sv
#KeyFile /etc/opendkim/keys/default.private
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts

/etc/opendkim/KeyTableの変更内容は以下のとおり。

default._domainkey.hoge.co.jp hoge.co.jp:default:/etc/opendkim/keys/hoge.co.jp/default

/etc/opendkim/TrustedHostsの変更内容は以下のとおり。

127.0.0.1
localhost
mail.hoge.co.jp
hoge.co.jp

/etc/opendkim/SigningTableの変更内容は以下のとおり。

hoge.co.jp default._domainkey.hoge.co.jp

5)
Postfixの設定も変更する。
/etc/postfix/main.cfに以下を追記する。

#opendkim
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

6)
DNSの設定も変更する。

cat /etc/opendkim/keys/hoge.co.jp/default.txt

で表示される内容をDNSサーバに設定する。
可能なら、以下のようなDKIMポリシーも設定する。

_adsp._domainkey.example.com    IN    TXT    "dkim=unknown"

7)
opendkimの開始とpostfixの再起動。

/etc/rc.d/init.d/opendkim start
/etc/rc.d/init.d/postfix restart


これで終わりです。
ついでに、上記の処理をシェルスクリプトにしてみました。
良かったら自己責任で使ってください。(^^;)


#!/bin/sh

#DNS
#DNS=hoge.co.jp

echo "----> Start DKIM setting for ${DNS}"

####
# install epel
####
if [ ! -e /etc/yum.repos.d/epel.repo ]
then
 echo '----> Install epel'
 OSFILE=`ls /etc -F | grep "release$\|version$"`
 OS=`cat /etc/${OSFILE}`
 MACHINE=`uname -m`

 if [[ "$OS" =~ "CentOS release 6" ]]; then
  OSVER="6"
  RPM="epel-release-6-5.noarch.rpm"
 else
  echo '---->fail'
  exit;
 fi

 if [[ "$MACHINE" =~ "x86_64" ]]; then
  MACHINEVER="x86_64"
 else
  MACHINEVER="i386"
 fi

 EPELURL="http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/${OSVER}/${MACHINEVER}/${RPM}"
 wget $EPELURL
 rpm -ivh $RPM
fi

###
# install opendkim
###
echo '----> Install opendkim'
yum -y install opendkim

if [ ! -e /etc/opendkim/keys/${DNS}/default ]
then
 mkdir /etc/opendkim/keys/${DNS}
 /usr/bin/opendkim-genkey -D /etc/opendkim/keys/${DNS}/ -d ${DNS} -s default
 chown -R opendkim:opendkim /etc/opendkim/keys
 mv /etc/opendkim/keys/${DNS}/default.private /etc/opendkim/keys/${DNS}/default
fi

DKIM_CONF=/etc/opendkim.conf
KEY_TABLE=/etc/opendkim/KeyTable
TRUSTED_HOSTS=/etc/opendkim/TrustedHosts
SIGNING_TABLE=/etc/opendkim/SigningTable

POSTFIX_CONF=/etc/postfix/main.cf

echo '----> Eidt opendkim.conf'
if [ -e $DKIM_CONF ]
then
 if [ -e ${DKIM_CONF}.org ]
 then
  cp ${DKIM_CONF}.org ${DKIM_CONF}
 else
  cp ${DKIM_CONF} ${DKIM_CONF}.org
 fi

 sed -e 's/^Mode.*/Mode sv/' \
 -e 's/^KeyFile/#KeyFile/' \
 -e 's/^#KeyTable/KeyTable/' \
 -e 's/^#SigningTable/SigningTable/' \
 -e 's/^#ExternalIgnoreList/ExternalIgnoreList/' \
 -e 's/^#InternalHosts/InternalHosts/' \
 ${DKIM_CONF} > ${DKIM_CONF}.tmp
 cp ${DKIM_CONF}.tmp ${DKIM_CONF}
 rm -f ${DKIM_CONF}.tmp

 echo '----> Eidt KeyTable'
 if [ -e ${KEY_TABLE}.org ]
 then
  cp ${KEY_TABLE}.org ${KEY_TABLE}
 else
  cp ${KEY_TABLE} ${KEY_TABLE}.org
 fi
 echo "default._domainkey.${DNS} ${DNS}:default:/etc/opendkim/keys/${DNS}/default" >> ${KEY_TABLE}

 echo '----> Eidt TrustedHosts'
 if [ -e ${TRUSTED_HOSTS}.org ]
 then
  cp ${TRUSTED_HOSTS}.org ${TRUSTED_HOSTS}
 else
  cp ${TRUSTED_HOSTS} ${TRUSTED_HOSTS}.org
 fi
 echo "localhost" >> ${TRUSTED_HOSTS}
 echo "mail.${DNS}" >> ${TRUSTED_HOSTS}
 echo "${DNS}" >> ${TRUSTED_HOSTS}

 echo '----> Eidt SigningTable'
 if [ -e ${SIGNING_TABLE}.org ]
 then
  cp ${SIGNING_TABLE}.org ${SIGNING_TABLE}
 else
  cp ${SIGNING_TABLE} ${SIGNING_TABLE}.org
 fi
 echo "${DNS} default._domainkey.${DNS}" >> ${SIGNING_TABLE}

 echo '----> Eidt Postfix main.cf'
 GRP=`cat ${POSTFIX_CONF}|grep 'smtpd_milters'`
 if [ -z $GRP ]
 then
  echo "" >> ${POSTFIX_CONF}
  echo "#opendkim" >> ${POSTFIX_CONF}
  echo "smtpd_milters = inet:127.0.0.1:8891" >> ${POSTFIX_CONF}
  echo 'non_smtpd_milters = $smtpd_milters' >> ${POSTFIX_CONF}
  echo 'milter_default_action = accept' >> ${POSTFIX_CONF}
 fi

 echo '----> (re)start daemons'
 if [ -e /etc/rc.d/init.d/opendkim ]
 then
  restatus=`/etc/rc.d/init.d/opendkim status`
  if [[ "$restatus" =~ stopped ]]; then
   /etc/rc.d/init.d/opendkim start
  else
   /etc/rc.d/init.d/opendkim restart
  fi
 else
  echo '/etc/rc.d/init.d/opendkim not exists'
  exit;
 fi
 /sbin/chkconfig opendkim on

 if [ -e /etc/rc.d/init.d/postfix ]
 then
  restatus=`/etc/rc.d/init.d/postfix status`
  if [[ "$restatus" =~ stopped ]]; then
   /etc/rc.d/init.d/postfix start
  else
   /etc/rc.d/init.d/postfix restart
  fi
 else
  echo '/etc/rc.d/init.d/postfix not exists'
  exit;
 fi

 echo '#########################################'
 echo 'INSTALL IS OVER'
 echo '#########################################'
 echo ''
 echo 'Change DNS'
 cat /etc/opendkim/keys/${DNS}/default.txt
 echo "_adsp._domainkey"' IN TXT "dkim=unknown"'
else
 echo "----> FAIL: ${DKIM_CONF} is not exists!"
 exit;
fi

レゴ

2012年6月25日月曜日

gmailのバックアップ


windows7でgmailをバックアップしたい。
が、Thunderbirdなどのメーラを使って手動で同期するなど、手間のかかる
方法は一切使いたくない方のために。

1)
gmailの設定でPOPにアクセスできるようにする。

2)
cygwinをインストールする。
インストールの際に、Mailの項目のfetchmailとprocmailにも
チェックしておく。

3)
ログインユーザ名がnkdの場合、
C:\cygwin\home\nkd\
というディレクトリができている。
ここにメール関係の設定ファイルを置く。

まず、fetchmailの設定。
fetchmailはgmailからメールを取り出す処理を行う。

.fetchmailrcというファイルを作成し、以下のように記述する。

----
poll pop.gmail.com
protocol pop3
username "user@gmail.com" password "mypass"
keep ssl
mda "/usr/bin/procmail -m /home/nkd/.procmailrc"
----

※user@gmail.comはgmailのメールアドレス。
※mypassはgmailのログインパスワード。
※nkdの部分は自分のログインユーザ名とする。

次に、procmailの設定。
procmailは取り出したメールを振り分けて保存する処理を
行う。fetchmailだけだと1つのファイルにメールが書き込まれて
いくので、使い勝手が悪いのでメールごとに1つのファイルに
書き込むようにする。

.prcomailrcというファイルを作成し、以下のように記述する。

----
MAILDIR=/home/nkd/
VERBOSE=on

:0
Mail/
----

※nkdの部分は自分のログインユーザ名とする。

4)
動作の確認。
cygwinのアイコンにアクセスし、

fetchmai -vk

と入力してみる。いろいろとログが出力されるので、ログを確認し
メールを取り込めているか確認する。
なお、ちゃんと取り込めている場合、
C:\cygwin\home\nkd\Mail\new
以下にメールごとのファイルが作成されている。

5)
最後に、windowsのタスクスケジューラを使って定期的にgmailに
アクセスするようにする。

ただし、

fetchmai -vk

を実行するだけのバッチファイルを登録すると、処理ごとに
ウィンドウが表示されるので煩わしいので、VBSファイルを利用して
ウィンドウを非表示とする。

作成するのは、gmailbak.batとgmailbak.vbsの2つのファイル。
ともにC:\cygwin\home\nkd\以下に作成する。

gmailbak.batの内容は以下のとおり。

----
c:/cygwin/bin/bash.exe --login -i -c "fetchmail -k;
----

gmailbak.vbsの内容は以下のとおり。

----
Set objWSHShell = CreateObject("WScript.Shell")
objWSHShell.Run "cmd.exe /c C:\cygwin\home\nkd\gmailbak.bat", 7
----

※nkdの部分は自分のログインユーザ名とする。

タスクスケジューラには、定期的にgmailbak.vbsを実行するように
設定すれば完了。