web-dev-qa-db-ja.com

Postfix:SMTP、465ではなく587のポートを使用

Flurdyの指示を使用してAWSEC2にメールサーバーをセットアップしました: http://flurdy.com/docs/postfix/ ほとんどうまくいきました。

私の問題は、SSLでは465ではなくTLSでSMTPポート587を使用したいということです。ポート465は将来の証拠ではないと考えられているため、これは関連する要件であると思います。

Flurdyサイトの説明は両方を許可するように設計されていますが、587を動作させることはできません。 SSLを使用した465は魅力的です。

また、このビルドはMySQLでsaslを使用していることにも言及する必要があります。これが、エラーをGoogleで検索したときにあまり役に立たなかった理由だと思います。エラーはSASL/PAMの領域のどこかにあると思いますが、運がありませんでした。

ログ出力の一部を次に示します。

MAIL.LOG

postfix/smtpd[11328]: connect from MY.ISP.PROVIDER[MY.IP.0.0]
postfix/smtpd[11328]: Anonymous TLS connection established from MY.ISP.PROVIDER[MY.IP.0.0]: TLSv1.2 with cipher AES128-SHA256 (128/128 bits)
postfix/smtpd[11328]: warning: SASL authentication failure: client response doesn't match what we generated (tried bogus)
postfix/smtpd[11328]: warning: MY.ISP.PROVIDER[MY.IP.0.0]: SASL DIGEST-MD5 authentication failed: authentication failure
postfix/smtpd[11328]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
postfix/smtpd[11328]: warning: MY.ISP.PROVIDER[MY.IP.0.0]: SASL LOGIN authentication failed: generic failure
postfix/smtpd[11328]: lost connection after AUTH from MY.ISP.PROVIDER[MY.IP.0.0]
postfix/smtpd[11328]: disconnect from MY.ISP.PROVIDER[MY.IP.0.0]*

私のmaster.cf

submission inet n       -       n       -       -       smtpd
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject
  -o smtpd_sasl_security_options=noanonymous,noplaintext
  -o smtpd_sasl_tls_security_options=noanonymous

smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sasl_security_options=noanonymous,noplaintext
  -o smtpd_sasl_tls_security_options=noanonymous

AMAVISなどの他のconfもありますが、これはすべて問題ないと思います。

SQLログには、正しく機能しているすべての接続とクエリが表示されます。

テストにTELNETを使用しましたが、ポート587で認証を試みると、接続が閉じられます。サーバーでポート25を開くと、AUTHLOGINを正常に完了することができます。

25(開いているとき)と587のEHLO応答の違いは次のとおりです。587にAUTHが含まれていないことに気付きました。これは問題ですか?

$ telnet my.mailserver.com 587
Trying MY.IP.0.0...
Connected to my.mailserver.com.
Escape character is '^]'.
220 MY-EC2-SERVER-NAME.localdomain ESMTP Postfix
EHLO my.mailserver.com
250-MY-EC2-SERVER-NAME.localdomain
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

$ telnet my.mailserver.com 25
Trying MY.IP.0.0...
Connected to my.mailserver.com.
Escape character is '^]'.
220 MY-EC2-SERVER-NAME.localdomain ESMTP Postfix
EHLO my.mailserver.com
250-MY-EC2-SERVER-NAME.localdomain
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

サービスのpostfixとsaslauthdを何度も再起動しました。また、DB内のパスワードとユーザー名を再確認しました。私は指示を読み、設定ミスやスペルミスをチェックしましたが、これが最終的にはそうなる可能性があります:-)

サーバーはUBUNTU13.10です

デバッグに役立つ情報をさらに提供できるかどうか教えてください。

すべての考えを歓迎します!

4
Wairowe

また、 Flurdyのチュートリアル に従い、同様の問題が発生しました。ポート25(smtpd)からのみメールを送信でき、587(送信)からは送信できませんでした。彼の指示によれば、ポート25はchrootで実行するように構成されていましたが、587は構成されていなかったことが問題であることがわかりました。これは、チュートリアルのエラーのようです。 flurdyの指示のこの部分をチェックしてください:

デフォルトでは、通常のSMTPサービスのみが有効になっていますが、これは問題ありません。ただし、クライアントが使用できるように送信(ポート587)を有効にし、TLSのみに制限できるようにします。一部の古いクライアント(Outlook Expressなど)との互換性のために、smtpsサービス(ポート465)も有効にしました。

このテキストのすぐ下に次の行があり、送信ポートのデーモンはchrootを使用しないことを示しています。

submission inet n - n - - smtpd

私の元の/etc/postfix/master.cfファイルにこの凡例を示すコメントがあったので、私はこれを知っています:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================

送信ポートのオプションリストのすぐ下には、smtps(ポート465)を構成する次の行があります。

smtps inet n - - - - smtpd

これから、デフォルトを使用していることがわかります(-記号は、デフォルトを使用することを意味すると思います。つまり、chrootを使用します)。

では、SASL認証セクションを見ると、次のようになっています。

SASLAUTHDの実行方法を変更します。

OPTIONS変数に次のパスが含まれていることがわかります。

# Switch this to be under postfix's spool
# And add -r so that the realm(domain) is part of the username
OPTIONS="-r -c -m /var/spool/postfix/var/run/saslauthd"

繰り返しになりますが、最初にコメントした/etc/default/saslauthdファイルの助けを借りて、次の明確な説明に注意しました。

# Other options (default: -c -m /var/run/saslauthd)
# Note: You MUST specify the -m option or saslauthd won't run!
#
# WARNING: DO NOT SPECIFY THE -d OPTION.
# The -d option will cause saslauthd to run in the foreground instead of as
# a daemon. This will PREVENT YOUR SYSTEM FROM BOOTING PROPERLY. If you wish
# to run saslauthd in debug mode, please run it by hand to be safe.
#
# See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information.
# See the saslauthd man page and the output of 'saslauthd -h' for general
# information about these options.
#
# Example for chroot Postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Example for non-chroot Postfix users: "-c -m /var/run/saslauthd"
#
# To know if your Postfix is running chroot, check /etc/postfix/master.cf.
# If it has the line "smtp inet n - y - - smtpd" or "smtp inet n - - - - smtpd"
# then your Postfix is running in a chroot.
# If it has the line "smtp inet n - n - - smtpd" then your Postfix is NOT
# running in a chroot.
OPTIONS="-r -c -m /var/spool/postfix/var/run/saslauthd"

OPTIONS変数がchrootケースを明確に指定していたので、/etc/postfix/master.cfで送信構成を変更してchrootも使用するようにしました。サーバーを再起動した後(すべてのサービスが適切に再起動されたことを確認するため)、それは魅力のように機能しました。これで、ポート25または587のいずれかを介して電子メールを送信できます。

それもあなたを助けることを願っています!私もこれを見るのにかなりの時間を失いました...

1
Claudio