Sendmailがプロバイダのメールサーバー経由でメールを送るようにするための設定について。
最近の MTA は Exim や Postfix が主流だと思っているのですが、未だ SendMail が入ったサーバーを触る機会があります。
tracサーバーから、社外へのメール通知が届かないという相談を受けました(社内の、サーバーと同じドメインをもつメールアドレスには届く)。調べたところ、sendmail が宛先のホストへ直接配送しようとして失敗しているようでした。
これを、(例えば)自社のISPが持っているメールサーバーを経由して配送するように修正します。
Jun 18 15:00:00 localhost sendmail[1433]: r5I57VlE0011234:
to=<xxxx@example.com>, delay=01:34:33, xdelay=00:04:00, mailer=esmtp,
pri=439587, relay=mx2.fsi.co.jp. [157.120.127.242], dsn=4.0.0,
stat=Deferred: Connection timed out with mx2.example.com.
やった事
root で
# yum install sendmail-cf # 必要なパッケージをインストール (CentOSの場合)
# cd /etc/mail/
# vi sendmail.mc # 設定を修正 (後述)
# make sendmail.cf # sendmail.cf を更新
# pkill -HUP sendmail # sendmail を再起動
sendmail.mc の修正内容
--- /etc/mail/sendmail.mc.bak 2013-06-18 16:00:09.000000000 +0900
+++ /etc/mail/sendmail.mc 2013-06-18 16:30:00.000000000 +0900
@@ -171,6 +171,12 @@
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
+
+FEATURE(`masquerade_envelope')
+MASQUERADE_AS(`itpl.co.jp')dnl
+MASQUERADE_DOMAIN(`localhost.localdomain')dnl
+
MAILER(smtp)dnl
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl
+define(`SMART_HOST',`relay:mailhost.itpl.co.jp')dnl
- 送信者の localhost.localdomain を itpl.co.jp に書き換える (masquerae_envelope)
- メールを直接配送せず、 mailhost.itpl.co.jp を用いる (SMART_HOST)