どこかのメールサーバに届いたメールをなにも考えず全部別のメールサーバに転送したい場合の設定をgoogle、Technoratiで検索したらなかなかみつからなかったのでまとめてみました。
.forward とか /etc/aliases とかで転送してもよいのですが、この方法だと転送先に届かないとメールを送ったところに転送先の携帯メールアドレスとかが漏れてしまうので、今回は fetchmail + procmail でpopで取ってきて転送する方法です。
確認した環境/条件は、以下のようになってます。
Fedora 7
procmail-3.22-19.fc7
fetchmail-6.3.7-2.fc7
転送元メール(POP3)サーバ : xxx.example.com
転送元POPユーザ : foo
転送元POPパスワード: bar
転送先メールアドレス: xxxxx@donomo.ne.jp
転送に使うメールサーバ(MTA) : localhost
10分間隔で転送元に届いたメールをチェック
転送したメールも転送元のメールサーバに残す
【.fetchmailrc の記述】
set postmaster root
set nobouncemail
set logfile fetchmail.log
defaults
protocol pop3
no rewrite
no mimedecodepoll xxx.example.com
uidl
username “foo”
password “bar”
mda “/usr/bin/procmail”
keep
【.procmailrc の記述】
:0 c
! xxxxx@donomo.ne.jp
【注意事項】
.fetchmailrc と .procmailrc のアクセス権限は、600 (group と otherのread/write/execute権限なし) とする。
$ chmod 600 .fetchmailrc
$ chmod 600 .procmailrc
fetchmail.log を事前に作成しておく
$ touch fetchmail.log
【crontab の設定】
*/10 * * * * /usr/bin/fetchmail > /dev/null 2>&1
fetchmailは、daemon化して一定時間間隔でメールチェックすることもできるのですが、daemon化した fetchmailがもしも何かの理由で異常終了したりするとメールをある日突然取ってこなくなることを想定して、crontab 設定で 10分間隔で fetchmailを起動しています。
この設定で転送できるようになりました。それと、転送先をありえないメールアドレスに設定して確認したところ、メールの発信元にはエラーが返らずfetchmailを起動したユーザにエラーメールが届きます。