Назад | Перейти на главную страницу

Что не так с моим SASL?

Итак, история гласит: у меня есть несколько виртуальных машин CentOS 6.9, перенесенных в облако Microsoft Azure с помощью загрузки VHD. После развертывания я обнаружил, что Azure не позволяет отправлять электронную почту непосредственно с виртуальной машины - я должен использовать внешний ретранслятор. Microsoft, кажется, предлагает Sendgrid, и у них есть бесплатный уровень, поэтому я зарегистрировался, настроил Postfix в соответствии с их инструкциями (см. Ниже) и ... ничего. Я не могу заставить Postfix аутентифицироваться с помощью релейного SMTP-сервера или любого другого внешнего ретранслятора, например, моего собственного сервера на gzo.com (exim на cPanel) или aruba.it (итальянский хостинг-провайдер).

Я сделал несколько попыток на портах 587, 2525 и 465 со всеми этими реле, каждый раз, когда postmap-ping файл паролей SASL и перезапускал 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=<20180314102000.90887634B3@Riprid.localdomain>
Mar 14 11:20:00 Riprid postfix/qmgr[6740]: 90887634B3: from=<root@Riprid.localdomain>, 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=<dejan@kozina.com>, 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, открыть сеанс SMTP, успешно пройти аутентификацию через AUTH PLAIN и AUTH LOGIN и вручную отправить себе тестовое сообщение. Это просто Postfix не может этого сделать.

Еще больше озадачивает: я скопировал ту же самую конфигурацию на исходные виртуальные машины, с которых были клонированы виртуальные машины в облаке (внутренний Hyper-V в локальной среде), и они без ошибок подключаются и отправляют почту через одни и те же серверы. Машины в Azure идентичны локальным, за исключением модификаций, необходимых для работы в Azure. как указано Microsoft.

Я нашел десятки предложений в Google, и я пробовал их все безрезультатно. У меня заканчиваются идеи (и время). Пожалуйста, предложите: где еще мне искать? Что еще я мог попробовать?

Это конфигурация (пользователь и пароль скрыты):

[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************af88@azure.com: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 --

У меня была такая же проблема с Red Hat Enterprise Linux Server версии 6.9 (Сантьяго), проблема была связана с отсутствующей библиотекой rpm (Cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64), после установки я исправил проблему.

Пожалуйста, проверьте, что все следующие rpm-пакеты правильно установлены в вашей системе, чтобы избежать других проблем с аутентификацией SASL:

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