久しぶりにSendmailの構築を行いましてね、構築ったってyum -y install sendmail sendmail-cfを行って、saslauthd起動させて、各種設定ファイルをガチャガチャして再起動してみた感じ。設定完了後携帯電話から587番ポートを使っての送信テストを行おうと思ったが、SMTP認証の部分ではじかれてしまいメールが送れなかった。ここに調査した方法と原因を記す。
サーバーにシェルログインしている状態で、localhostに対してメールソフトと同じ様にメール送信のための接続を再現する。私の場合はSSH経由で接続後localhostにtelnetしました。以下の場合は587番ポートに接続です。telnetコマンドがない場合は、「yum -y install telnet」でインストールすること。
# telnet localhost 587
すると以下のような応答が帰ってくる。サーバー情報を隠しているので「220 unknown ESMTP」となっているが「220」の応答が帰ってきている時点で、サーバーに接続できていることが分かる(SMTPサーバーの応答コードの詳細は「メールを送る際に使われるSMTPの仕組みとは?」の「SMTPリプライコード」を参考にしてくれ!)。
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 unknown ESMTP
ここでehloコマンドを使ってサーバーと挨拶を行います。
heloコマンドでもいいのですが、今回はどのような拡張(Extended)機能が利用できるのかを確認するためehloコマンドを使っています。
ehlo localhost
すると以下のような応答が帰ってきます。
ehlo localhost 250-xxx.xxxx.jp Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES250-PIPELINING250-8BITMIME 250-SIZE 10485760 250-DSN 250-DELIVERBY 250 HELP quit 221 2.0.0 xxx.xxxx.jp closing connection Connection closed by foreign host.
ちなみに同じ状況でheloコマンドを使ってみると、確認出来る情報量に変化があることがわかると思います。
以下のような応答が戻ってきますが、サーバーの拡張機能が確認できませんね。
helo localhost 250 xxx.xxxx.jp Hello localhost [127.0.0.1], pleased to meet you quit 221 2.0.0 xxx.xxxx.jp closing connection Connection closed by foreign host.
さて、上記ehloコマンドで問い合わせを行った際に「250-AUTH ~」が帰ってきませんね。
/etc/mail/sendmail.mc でのSMTP認証に関する設定は以下の部分と認識。
以下、sendmail.mcファイルから「AUTH」を含む行で「dnl」から始まらないもの。
# grep AUTH /etc/mail/sendmail.mc | grep -v ^dnl define(`confAUTH_OPTIONS', `A p')dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
悩んだ挙句、250-AUTH~の応答がない理由はSMTP認証に必要なパッケージがなかったためであることが判明
- cyrus-sasl-plain
- cyrus-sasl-md5
上記パッケージをインストールし、sendmailを再起動する。
# yum -y install cyrus-sasl-plain cyrus-sasl-md5 # service sendmail restart
sendmail再起動完了後、再度localhostにtelnetして確認する。
# telnet localhost 587 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 unknown ESMTP ehlo localhost 250-xxx.xxxx.jp Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 10485760 250-DSN 250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN 250-DELIVERBY 250 HELP quit 221 2.0.0 xxx.xxxx.jp closing connection Connection closed by foreign host.
Sendmailのログレベルを9から50にして調査したが、必要パッケージの不足であることは気づき様がなかった。。
以上
コメント
今晩は
sendmailすっか俺一回も構築したことはありません。
lpicのテストで試験範囲に入っていたので勉強はしましたけど、
一ヶ月ほど前に合格しました。
うちの会社は零細のweb屋なんでこういう資格があっても資格手当てでません(笑)
くりくりさん
Sendmailも構築したり、運用したりすると楽しいですよ!
SendmailとPostfixどっちがいいのかってよく知りませんが、自分は起動プロセス数の少ないSendmailで
十分メールサーバーとして動作するので(procmailでMaildirに配送)Sendmailにしています。
サーバー管理楽しそうだなぁー 自分も昔は法人向けレンタルサーバーの裏方で調査とか修理とかしてました(*´∀`*)
こんにちはサーバー管理者一人なんで孤独ですよ。
他の従業員はwebデザイナーだしPCの修理や回線みたりと色々仕事はあります。
大概暇ですけどね(w
とりあえずサーバー関連がおちついたので
スクリプト言語(シェル,php)を改めて一からやってみたいです。
全く同じ原因で泥沼にハマってましたので、大変助かりました。
解決しましたさん!
コメントありがとうございます。解決されたようでよかったです(*´∀`*)
わざわざコメント頂きましてありがとうございます!
[…] https://blog.trippyboy.com/2013/centos/centos-sendmail%E3%81%A7smtp%E8%AA%8D%E8%A8%BC%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E8%A1%8C%E3%81%A3%E3%81%9F%E3%81%8C%E3%80%8C250-auth%E3%80%8D%E3%81%8C%E8%BF%94%E3%81%A3%E3%81%A6%E3%81%93%E3%81%AA/ […]
[…] https://blog.trippyboy.com/2013/centos/centos-sendmail%E3%81%A7smtp%E8%AA%8D%E8%A8%BC%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E8%A1%8C%E3%81%A3%E3%81%9F%E3%81%8C%E3%80%8C250-auth%E3%80%8D%E3%81%8C%E8%BF%94%E3%81%A3%E3%81%A6%E3%81%93%E3%81%AA/ […]