Я переместил свой почтовый сервер с одной виртуальной машины на другую. Все настроено так, как было раньше, и с точки зрения 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-шифр (т.е. TLS - это уже установлено). Все хосты, которые отказываются использовать TLS, не будут объявлены для аутентификации.
Эта стратегия полезна для предотвращения аутентификации с открытым доступом по незашифрованным соединениям.