Sendmail: ISPのメールサーバー経由でメールを送る設定

More than 5 years have passed since last update.

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)