※実際には10/16のネタです。
■fetchmailの導入
デーモンとして起動するのは後回しにします。
$ sudo apt-get install fetchmail
$ sudo grep START_DAEMON /etc/default/fetchmail
START_DAEMON=no
■未設定だと動きません。
$ fetchmail -v
fetchmail: メールサーバが指定されておりません。
■サンプルを確認。
$ ls /usr/share/doc/fetchmail/examples/fetchmailrc.example
■これだけは設定しておく。
$ man fetchmail 2>&1 | grep "^ .*keep.*-k"
keep -k 既読のメッセージをサーバから削除しません。
$ man fetchmail 2>&1 | grep "^ .*set syslog.*s"
set syslog syslog(3) を使ったエラーのログ取得を行います。
最後に、`set syslog' を指定するとログメッセージが syslogd(8) に 送られるようになります。
後はお好みで。。。
■fetchmailrcの最小限の設定を行ないます。
後はマニュアルを見ながらカスタマイズするということで。
概要:995ポートのPOP3でSSLを使用したgmailの受信を行なう。
syslogに出力し確認する。
$ FUSER=`whoami`
FPASS=password
echo "
set postmaster ${FUSER}
set bouncemail
set syslog
defaults
no mimedecode
keep
poll pop.gmail.com
port 995
username \"${FUSER}@gmail.com\"
password \"${FPASS}\"
ssl is ${FUSER} here" > .fetchmailrc.org
■パスワードがあるので、600に。
$ cp .fetchmailrc.org .fetchmailrc
$ sudo chown `whoami`:`whoami` .fetchmailrc*
$ sudo chmod 600 .fetchmailrc*
■ステータスチェック
何も表示されなければ正常です。
$ fetchmail -c
■受信チェック
$ fetchmail -v
※結果はsyslogで見ます。
$ sudo tail -f /var/log/syslog
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: SMTP> MAIL FROM:<********@gmail.com> SIZE=3305
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: SMTP< 250 2.1.0 Ok
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: SMTP> RCPT TO:<********@localhost>
Oct 16 09:29:02 vmsqueeze postfix/smtpd[2452]: XXXXXXXXXXX: client=localhost[127.0.0.1]
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: SMTP< 250 2.1.5 Ok
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: SMTP> DATA
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: SMTP< 354 End data with .
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: SMTP>. (EOM)
Oct 16 09:29:02 vmsqueeze postfix/cleanup[2894]: XXXXXXXXXXX: message-id=<********@gmail.com>
Oct 16 09:29:02 vmsqueeze postfix/qmgr[1172]: XXXXXXXXXXX: from=<********@gmail.com>, size=3676, nrcpt=1 (que
ue active)
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: SMTP< 250 2.0.0 Ok: queued as XXXXXXXXXXX
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: サーバからメッセージを削除しませんでした。
Oct 16 09:29:02 vmsqueeze fetchmail[2451]: POP3> QUIT
Oct 16 09:29:02 vmsqueeze postfix/local[2474]: XXXXXXXXXXX: to=<********@localhost>, relay=local, delay=0.06,
delays=0.04/0/0/0.01, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Oct 16 09:29:02 vmsqueeze postfix/qmgr[1172]: XXXXXXXXXXX: removed
Oct 16 09:29:12 vmsqueeze fetchmail[2451]: POP3< +OK Farewell.
Oct 16 09:29:12 vmsqueeze fetchmail[2451]: SMTP> QUIT
Oct 16 09:29:12 vmsqueeze postfix/smtpd[2452]: disconnect from localhost[127.0.0.1]
Oct 16 09:29:12 vmsqueeze fetchmail[2451]: SMTP< 221 2.0.0 Bye
Oct 16 09:29:12 vmsqueeze fetchmail[2451]: 6.3.18 は pop.gmail.com とプロトコル POP3 を用いて 2011年10月16日
09時29分12秒 に交信しています。交信が終了しました。
Oct 16 09:29:12 vmsqueeze fetchmail[2451]: 6.3.18 は pop.gmail.com とプロトコル auto を用いて 2011年10月16日
09時29分12秒 に交信しています。交信が終了しました。
Oct 16 09:29:12 vmsqueeze fetchmail[2451]: 通常の終了です。status 0
■デーモンとして動作させる。
$ sudo cp -pi /etc/default/fetchmail /etc/default/fetchmail.org
$ sudo sed s/START_DAEMON=no/START_DAEMON=yes/ /etc/default/fetchmail.org > /etc/default/fetchmail
$ sudo /etc/init.d/fetchmail restart
■crontabでも構いません。
$ env EDITOR=vim crontab -e
0,10,20,30,40,50 * * * * /usr/bin/fetchmail -v
次は送信と文字コードかな。。。
■追記(2011/10/16)
1GBほどのメールを少しづつ同期して、約2日かかる。
※下記URLのように設定にはコメントを追加した方が良い。
http://kajuhome.com/fetchmail.shtml
☆既読かどうかチェックして(uidl)、未読のみ(no fetchall)を追加するように変更。
$ sudo tail -f /var/log/syslog | sed s/"宛に届いた"/"\n&"/
Oct 16 18:10:10 vmsqueeze fetchmail[31387]: ********@gmail.com@pop.gmail.com 宛に届いた
289 番目のメッセージを読み飛ばしています。 サーバからメッセージを削除しませんでした。
■postfixと同様syslogで内部配送の送信チェックを行なう。
$ sudo tail -f /var/log/syslog | grep status= --color
Oct 16 13:25:24 mlsqueeze postfix/local[17334]: 4058A18C4FC: to=, relay=local, delay=0.06, delays=0.05/0/0/0.01,
dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
■mailコマンドからのアクセスでも1GBもあると、結構時間がかかる。。。
$ ls -l /var/spool/mail/labunix
-rw-rw---- 1 labunix mail 1480372744 2011-10-16 16:51 /var/spool/mail/labunix
$ ls -lh /var/spool/mail/labunix
-rw-rw---- 1 labunix mail 1.3G 2011-10-16 16:51 /var/spool/mail/labunix
■既読分は/homeに移動する。これはpostfixのmail_locationで設定した場所。
$ ls -l /home/labunix/mbox
-rw------- 1 labunix labunix 18944261 2011-10-16 17:33 /home/labunix/mbox
■内部配送
後は別のdebianシステムにローカルのdovecotを指定して、fetchmailで配送出来る。
ポートやアカウント、SSLの有無を設定すれば良い。
このシステム間メールは送受信共に可能。
☆POP3の110ポート、SSL無しで取りに言った場合。
$ tail -f /var/log/syslog
Oct 16 17:52:48 amdlenny fetchmail[5481]: POP3< 12425 000030894e9a9a35
☆SSL自己証明書で取りにいった場合
$ tail -f /var/log/syslog
Oct 16 17:52:32 ibm-amddebian fetchmail[5481]: サーバ証明書検証エラー: self signed certificate
■中間まとめ
「自己証明書ですよね?」という感じの親切なログです。
後は、gmail経由で送信出来ればOKです。
英語ですが、以下に必要なものはそろっている様子。
http://souptonuts.sourceforge.net/postfix_tutorial.html
特に内部サーバ間のローカル配送の際にはループになら無いよう
syslogを監視しましょう。(自戒の意味も込めて。。。)