話はこうです。私は CentOS 6.9 仮想マシンを 10 台所有しており、VHD アップロードによって Microsoft Azure クラウドに移行しました。デプロイ後、Azure では VM から直接メールを送信できないことがわかりました。外部リレーを使用する必要があるようです。Microsoft は Sendgrid を推奨しているようで、無料レベルもあるので、サインアップし、指示に従って Postfix を構成しましたが (下記参照)、何も起こりませんでした。リレー SMTP サーバー、または gzo.com (cPanel 上の exim) や aruba.it (イタリアのホスティング プロバイダー) にある自分のサーバーなどの他の外部リレーで Postfix を認証できません。
私は、これらすべてのリレーでポート 587、2525、および 465 に対してさまざまな試行を行ないました。そのたびに SASL パスワード ファイルを postmap し、Postfix を再起動しましたが、すべて次のエラーで失敗しました。
Mar 14 11:17:34 Riprid postfix/postfix-script[6664]: stopping the Postfix mail system
Mar 14 11:17:34 Riprid postfix/master[60718]: terminating on signal 15
Mar 14 11:17:34 Riprid postfix/postfix-script[6736]: starting the Postfix mail system
Mar 14 11:17:34 Riprid postfix/master[6737]: daemon started -- version 2.6.6, configuration /etc/postfix
Mar 14 11:20:00 Riprid postfix/pickup[6739]: 90887634B3: uid=0 from=<root>
Mar 14 11:20:00 Riprid postfix/cleanup[6914]: 90887634B3: message-id=<[email protected]>
Mar 14 11:20:00 Riprid postfix/qmgr[6740]: 90887634B3: from=<[email protected]>, size=437, nrcpt=1 (queue active)
Mar 14 11:20:02 Riprid postfix/smtp[6916]: warning: SASL authentication failure: No worthy mechs found
Mar 14 11:20:02 Riprid postfix/smtp[6916]: 90887634B3: SASL authentication failed; cannot authenticate to server smtp.sendgrid.net[161.202.148.160]: no mechanism available
Mar 14 11:20:03 Riprid postfix/smtp[6916]: warning: SASL authentication failure: No worthy mechs found
Mar 14 11:20:03 Riprid postfix/smtp[6916]: 90887634B3: to=<[email protected]>, relay=smtp.sendgrid.net[169.38.103.39]:587, delay=3.2, delays=0.06/0.03/3.1/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server smtp.sendgrid.net[169.38.103.39]: no mechanism available)
ユーザーの資格情報は正しいです。Linux シェルから telnet 経由で 3 つのサーバーすべてに接続し、SMTP セッションを開き、AUTH PLAIN と AUTH LOGIN の両方で正常に認証し、手動で自分自身にテスト メッセージを送信することができました。Postfix だけがそれができないのです。
さらに不可解なのは、クラウドの VM のクローン元である元の仮想マシン (オンプレミスの社内 Hyper-V) にまったく同じ構成をコピーしたところ、同じサーバーを介してエラーなく接続してメールを送信できたことです。Azure 上のマシンは、Azure で実行するために必要な変更を除いて、オンプレミスのマシンとまったく同じです。Microsoftがリストしている。
グーグルで検索するとたくさんの提案が見つかり、すべて試してみましたが効果はありませんでした。アイデアが尽きてきました (そして時間も尽きてきました)。他にどこを探せばよいか、他に何を試せばよいか、教えてください。
これは設定です(ユーザー名とパスワードは隠されています):
[root@Riprid zeta]# uname -a
Linux Riprid 2.6.32-696.20.1.el6.centos.plus.x86_64 #1 SMP Sun Jan 28 07:56:00 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@Riprid zeta]# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
header_size_limit = 4096000
html_directory = no
inet_interfaces = all
inet_protocols = ipv4
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mynetworks_style = host
newaliases_path = /usr/bin/newaliases.postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
relayhost = [smtp.sendgrid.net]:587
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_generic_maps = hash:/etc/postfix/generic
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain, login
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus
smtp_tls_CAfile = /etc/postfix/gd_bundle-g2-g1.crt
smtp_tls_security_level = may
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_tls_auth_only = no
unknown_local_recipient_reject_code = 550
[root@Riprid zeta]# cat /etc/postfix/sasl_passwd
[smtp.sendgrid.net]:587 azure_260************[email protected]:OL***0***w**
[root@Riprid zeta]# cat /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
[root@Riprid zeta]# service saslauthd status
saslauthd (pid 28917) is running...
[root@Riprid zeta]# postconf -A
cyrus
[root@Riprid zeta]# yum list postfix cyrus*
...
Installed Packages
cyrus-sasl.x86_64 2.1.23-15.el6_6.2 @updates
cyrus-sasl-devel.x86_64 2.1.23-15.el6_6.2 @updates
cyrus-sasl-lib.x86_64 2.1.23-15.el6_6.2 @updates
cyrus-sasl-md5.x86_64 2.1.23-15.el6_6.2 @base
cyrus-sasl-ntlm.x86_64 2.1.23-15.el6_6.2 @base
cyrus-sasl-plain.x86_64 2.1.23-15.el6_6.2 @base
postfix.x86_64 2:2.6.6-8.el6.centos.plus @centosplus
そして最後に、これが saslfinger の出力です。
[root@Riprid zeta]# saslfinger -c
saslfinger - postfix Cyrus sasl configuration Wed Mar 14 11:17:38 CET 2018
version: 1.0.2
mode: client-side SMTP AUTH
-- basics --
Postfix: 2.6.6
System: CentOS release 6.9 (Final)
-- smtp is linked to --
libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00007f79ea3db000)
-- active SMTP AUTH and TLS parameters for smtp --
relayhost = [smtp.sendgrid.net]:587
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain, login
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus
smtp_tls_CAfile = /etc/postfix/gd_bundle-g2-g1.crt
smtp_tls_security_level = may
-- listing of /usr/lib64/sasl2 --
total 640
drwxr-xr-x. 2 root root 4096 Mar 12 22:49 .
dr-xr-xr-x. 68 root root 45056 Mar 14 03:25 ..
-rwxr-xr-x. 1 root root 18776 Mar 25 2015 libanonymous.so
-rwxr-xr-x. 1 root root 18776 Mar 25 2015 libanonymous.so.2
-rwxr-xr-x. 1 root root 18776 Mar 25 2015 libanonymous.so.2.0.23
-rwxr-xr-x. 1 root root 22936 Mar 25 2015 libcrammd5.so
-rwxr-xr-x. 1 root root 22936 Mar 25 2015 libcrammd5.so.2
-rwxr-xr-x. 1 root root 22936 Mar 25 2015 libcrammd5.so.2.0.23
-rwxr-xr-x. 1 root root 52088 Mar 25 2015 libdigestmd5.so
-rwxr-xr-x. 1 root root 52088 Mar 25 2015 libdigestmd5.so.2
-rwxr-xr-x. 1 root root 52088 Mar 25 2015 libdigestmd5.so.2.0.23
-rwxr-xr-x. 1 root root 18808 Mar 25 2015 liblogin.so
-rwxr-xr-x. 1 root root 18808 Mar 25 2015 liblogin.so.2
-rwxr-xr-x. 1 root root 18808 Mar 25 2015 liblogin.so.2.0.23
-rwxr-xr-x. 1 root root 35376 Mar 25 2015 libntlm.so
-rwxr-xr-x. 1 root root 35376 Mar 25 2015 libntlm.so.2
-rwxr-xr-x. 1 root root 35376 Mar 25 2015 libntlm.so.2.0.23
-rwxr-xr-x. 1 root root 18808 Mar 25 2015 libplain.so
-rwxr-xr-x. 1 root root 18808 Mar 25 2015 libplain.so.2
-rwxr-xr-x. 1 root root 18808 Mar 25 2015 libplain.so.2.0.23
-rwxr-xr-x. 1 root root 22784 Mar 25 2015 libsasldb.so
-rwxr-xr-x. 1 root root 22784 Mar 25 2015 libsasldb.so.2
-rwxr-xr-x. 1 root root 22784 Mar 25 2015 libsasldb.so.2.0.23
-- listing of /etc/sasl2 --
total 20
drwxr-xr-x. 2 root root 4096 Sep 19 15:39 .
drwxr-xr-x. 110 root root 12288 Mar 14 03:23 ..
-rw-r--r--. 1 root root 49 Feb 21 16:39 smtpd.conf
-- permissions for /etc/postfix/sasl_passwd --
-rw-------. 1 root root 90 Mar 14 11:17 /etc/postfix/sasl_passwd
-- permissions for /etc/postfix/sasl_passwd.db --
-rw-------. 1 root root 12288 Mar 14 11:17 /etc/postfix/sasl_passwd.db
/etc/postfix/sasl_passwd.db is up to date.
-- active services in /etc/postfix/master.cf --
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
smtp inet n - n - - smtpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
-o smtp_fallback_relay=
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
-- mechanisms on [smtp.sendgrid.net]:587 --
-- end of saslfinger output --
答え1
Red Hat Enterprise Linux Serverリリース6.9(Santiago)でも同じ問題が発生しました。この問題はrpmライブラリの不足に関連していました(cyrus-sasl-プレーン-2.1.23-15.el6_6.2.x86_64)、インストール後、問題は解決しました。
SASL 認証に関するその他の問題を回避するために、以下のすべての rpm がシステムに正しくインストールされていることを確認してください。
cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64 cyrus-sasl-2.1.23-15.el6_6.2.x86_64 cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64 cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64