6月 182013
 
シェアする

久しぶりに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にして調査したが、必要パッケージの不足であることは気づき様がなかった。。

以上

このエントリーをはてなブックマークに追加

  7 コメント

  1. 今晩は
    sendmailすっか俺一回も構築したことはありません。
    lpicのテストで試験範囲に入っていたので勉強はしましたけど、
    一ヶ月ほど前に合格しました。
    うちの会社は零細のweb屋なんでこういう資格があっても資格手当てでません(笑)

  2. くりくりさん

    Sendmailも構築したり、運用したりすると楽しいですよ!
    SendmailとPostfixどっちがいいのかってよく知りませんが、自分は起動プロセス数の少ないSendmailで
    十分メールサーバーとして動作するので(procmailでMaildirに配送)Sendmailにしています。

    サーバー管理楽しそうだなぁー 自分も昔は法人向けレンタルサーバーの裏方で調査とか修理とかしてました(*´∀`*)

  3. こんにちはサーバー管理者一人なんで孤独ですよ。
    他の従業員はwebデザイナーだしPCの修理や回線みたりと色々仕事はあります。
    大概暇ですけどね(w

    とりあえずサーバー関連がおちついたので
    スクリプト言語(シェル,php)を改めて一からやってみたいです。

  4. 全く同じ原因で泥沼にハマってましたので、大変助かりました。

  5. 解決しましたさん!
    コメントありがとうございます。解決されたようでよかったです(*´∀`*)
    わざわざコメント頂きましてありがとうございます!

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ