Я переместил свой почтовый сервер с одной виртуальной машины на другую. Все настроено, как и раньше, и с точки зрения IMAP проблем нет.
Однако в настоящее время у меня возникла проблема с отправкой писем. Он заявляет, что реле не разрешено, однако, глядя на конфигурацию, этого не должно быть. Чтобы подтвердить проблему с ретрансляцией, я начал изучать связь OpenSSL / Telnet, чтобы копать дальше.
Это привело меня к тому, что AUTH
не рекламируется. У меня уже есть ACL, который позволяет отправлять электронную почту от аутентифицированного пользователя. У меня также есть 2 аутентификатора dovecot в моей конфигурации exim:
dovecot_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
dovecot_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
У меня также настроена конфигурация аутентификации на Dovecot, однако я все еще не получаю AUTH
рекламируется.
# stat /var/run/dovecot/auth-client
File: ‘/var/run/dovecot/auth-client’
Size: 0 Blocks: 0 IO Block: 4096 socket
Device: 13h/19d Inode: 327490 Links: 1
Access: (0660/srw-rw----) Uid: ( 93/ exim) Gid: ( 0/ root)
Context: system_u:object_r:dovecot_var_run_t:s0
Access: 2018-09-28 17:36:19.665586834 +0100
Modify: 2018-09-28 17:36:19.665586834 +0100
Change: 2018-09-28 17:36:19.665586834 +0100
Birth: -
У меня SELinux установлен в разрешающий режим, поэтому я знаю, что это не вызывает проблем. Это сообщение OpenSSL:
250 HELP
EHLO home.pc
250-mail.domain.com Hello home.pc [ip.ip.ip.ip]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-CHUNKING
250-PRDR
250 HELP
AUTH
503 AUTH command used when not advertised
DONE
Я немного застрял в том, как это решить. Любые указатели на то, на что смотреть, были бы находкой.
РЕДАКТИРОВАТЬ: Вот полная конфигурация Exim: https://pastebin.com/q2zmQLiM
Вы пропустили условие для авторизации рекламы.
Возможно, самый простой способ - объявить авторизацию только для тех хостов, которые использовали TLS для подключения:
auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}
Семантика приведенного выше условия следующая: auth объявляется для каждого хоста, имеющего непустой tls-cipher (т.е. TLS уже установлен). Все хосты, которые отказываются использовать TLS, не будут объявлены для аутентификации.
Эта стратегия полезна для предотвращения аутентификации в режиме простого прохода по незашифрованным соединениям.