CentOS root 宛のメールが転送されないから直した
サーバの機材入れ替えで浮いたマシンを適当マシンにしようと、DNSで名前を割り当てずにいたら root 宛てのメールが飛ばなくなった。
aliases の設定は問題なし。newaliases も実施済み。
にもかかわらず、 maillog はエラー状態
Apr 24 01:13:00 foobar sendmail[19486]: q3P82D9A019486: from=root, size=15, class=0, nrcpts=1, msgid=<201204250413.q3P82D9A019486@foobar.mydomain.jp>, relay=root@localhost Apr 24 01:13:00 foobar sendmail[19487]: q3P82D3l019487: from=<root@foobar.mydomain.jp>, size=365, class=0, nrcpts=1, msgid=<201204250413.q3P82D9A019486@foobar.mydomain.jp>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1] Apr 24 01:13:00 foobar sendmail[19486]: q3P82D9A019486: to=root, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30015, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (q3P82D3l019487 Message accepted for delivery) Apr 24 01:13:00 foobar sendmail[19489]: q3P82D3l019487: to=<root@foobar.mydomain.jp>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120365, relay=foobar.mydomain.jp, dsn=5.1.2, stat=Host unknown (Name server: foobar.mydomain.jp: host not found) Apr 24 01:13:00 foobar sendmail[19489]: q3P82D3l019487: q3P82D3l019489: DSN: Host unknown (Name server: foobar.mydomain.jp: host not found) Apr 24 01:13:00 foobar sendmail[19489]: q3P82D3l019489: to=<root@foobar.mydomain.jp>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=31640, relay=foobar.mydomain.jp, dsn=5.1.2, stat=Host unknown (Name server: foobar.mydomain.jp: host not found) Apr 24 01:13:00 foobar sendmail[19489]: q3P82D3l019489: q3P82D3m019489: return to sender: Host unknown (Name server: foobar.mydomain.jp: host not found)
うろうろと情報を探し回ったところ、sendmail のマスカレード設定 always_add_domain の罠 を発見。
これによると、sendmail.mc で always_add_domain が有効になっていると勝手にマシンローカルで設定しているドメイン名(/etc/sysconfig/networkのHOSTNAMEの設定)が補完されるという。
確認すると、
# vi sendmail.mc FEATURE(always_add_domain)dnl
ハイ。always_add_domain が有効になってました。そりゃ届かんよorz
勝手にマシン名が補完されてたので、aliases の設定は無視されて補完されたドメインのサーバに送ろうとするものの、DNSには未登録なので IP を引けなくてエラーになる。と。
コメントアウトしておく
dnl FEATURE(always_add_domain)dnl
設定変更したので m4 しようとしたらエラーorz
# m4 sendmail.mc > sendmail.cf sendmail.mc:10: m4: cannot open `/usr/share/sendmail-cf/m4/cf.m4': No such file or directory
m4 はデフォルトでは入っていなくて、sendmail-cf パッケージが必要とのこと。
インストールする。
# yum -y install sendmail-cf (略) Installed: sendmail-cf.i386 0:8.13.8-8.1.el5_7
設定反映させて sendmail 再起動。
# m4 sendmail.mc > sendmail.cf # /etc/init.d/sendmail restart sm-client を停止中: [ OK ] sendmail を停止中: [ OK ] sendmail を起動中: [ OK ] sm-client を起動中: [ OK ]
テストメールを投げる。
# mail root Subject: test test . Cc:
成功
Apr 24 01:26:12 foobar sendmail[19599]: q3PE4DFH019599: from=root, size=29, class=0, nrcpts=1, msgid=<201204250426.q3PE4DFH019599@foobar.mydomain.jp>, relay=root@localhost Apr 24 01:26:12 foobar sendmail[19600]: q3PE4DPN019600: from=<root@foobar.mydomain.jp>, size=379, class=0, nrcpts=1, msgid=<201204250426.q3PE4DFH019599@foobar.mydomain.jp>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1] Apr 24 01:26:12 foobar sendmail[19599]: q3PE4DFH019599: to=root, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30029, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (q3PE4DPN019600 Message accepted for delivery) Apr 24 01:26:12 foobar sendmail[19601]: STARTTLS=client, relay=mail.mydomain.jp., field=cn_issuer, status=failed to extract CN Apr 24 01:26:12 foobar sendmail[19601]: STARTTLS=client, relay=mail.mydomain.jp., version=TLSv1/SSLv3, verify=FAIL, cipher=DHE-RSA-AES256-SHA, bits=256/256 Apr 24 01:26:12 foobar sendmail[19601]: q3PE4DPN019600: to=owner@mydomain.jp, ctladdr=<root@foobar.mydomain.jp> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=30649, relay=mail.mydomain.jp. [xxx.xxx.xxx.xxx], dsn=2.0.0, stat=Sent (Ok: queued as 58C763BF19C)