
Flurdy の指示に従って、AWS EC2 上にメール サーバーをセットアップしました。http://flurdy.com/docs/postfix/ほとんどうまくいきました。
私の問題は、SSL の 465 ではなく、TLS の SMTP ポート 587 を使用したいということです。ポート 465 は将来性がないと考えられているため、これは関連する要件であると思います。
Flurdy サイトの手順では、両方を許可するように設計されていますが、587 を動作させることができません。SSL 付きの 465 はうまく動作します。
また、このビルドでは MySQL で sasl が使用されていることにも言及する必要があります。このため、エラーを Google で検索してもあまり助けが見つからないと思います。エラーは SASL / PAM 領域のどこかにあると思いますが、うまくいきませんでした。
ログ出力の一部を以下に示します。
メールログ
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]*
私のマスター.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 を開くと、認証ログインを正常に完了できます。
これは、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 内のパスワードとユーザー名も二重にチェックしました。手順を確認し、設定ミスやスペルミスがないか確認しましたが、最終的にはこうなる可能性が高いです :-)
サーバーはUBUNTU 13.10です
デバッグに役立つ追加情報を提供できる場合はお知らせください。
あらゆるご意見を歓迎します!
答え1
私もフォローしましたFlurdyのチュートリアル同様の問題がありました。ポート 25 (smtpd) 経由でしかメールを送信できず、ポート 587 (submission) 経由では送信できませんでした。彼の指示によると、問題はまさにポート 25 が chroot で実行するように設定されているのに、ポート 587 は設定されていないということであることが分かりました。これはチュートリアルのエラーのようです。flurdy の指示のこの部分を確認してください。
デフォルトでは、通常の SMTP サービスのみが有効になっていますが、これは問題ありません。ただし、クライアントが使用できるように、サブミッション (ポート 587) を有効にして、TLS のみに制限できるようにすることをお勧めします。また、一部の古いクライアント (Outlook Express など) との互換性のために、SMTP サービス (ポート 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 のいずれかを使用して電子メールを送信できるようになりました。
あなたにも役立つといいですね!私もこれを見るのにかなりの時間を費やしました...