Я установил простой почтовый сервер с Exim и Dovecot. Поскольку, очевидно, я не хочу иметь открытый сервер ретрансляции, я хочу ограничить доступ извне. Я прикинул следующую конфигурацию:
submission_relay_host = 127.0.0.1
submission_relay_port = 25
и добавил в Exim соответствующий ACL, который разрешает ретрансляцию только с localhost, поскольку Dovecot работает на той же машине. Несмотря на то, что я не использую публичный IP-адрес в конфигурации, все же Exim решает, что соединение установлено с публичного IP моего сервера, и разрешает ретрансляцию только в том случае, если я добавляю его в ACL Exim.
Два вопроса:
У вас будет меньше проблем, если вы позволите Exim'у вместо dovecot прослушивать порт отправки и выполнять работу по передаче почты (используйте daemon_smtp_ports = 25: 465: 587). Вы можете настроить Exim на использование dovecot для аутентификации пользователя (в моей системе в новом файле /etc/exim4/conf.d/auth/35_exim4-config_auth_server):
DOVECOT_AUTH_SOCKET = /var/run/dovecot/auth-client
plain:
driver = dovecot
public_name = PLAIN
server_socket = DOVECOT_AUTH_SOCKET
server_set_id = $auth1
server_advertise_condition = ${if eq{$tls_in_cipher}{}{no}{yes}}
[...]
$ Tls_in_cipher был переименован в какой-то момент, я полагаю, пожалуйста, проверьте документы. Убедитесь, что пользователи должны пройти аутентификацию на порту отправки (в моей системе в /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt):
acl_check_rcpt:
# deny non-authenticated messages on submission port
deny
condition = ${if eq{$interface_port}{587}}
! hosts = <; ; 127.0.0.1 ; localhost ; ::1
! authenticated = *
message = Please authenticate on submission port (587)
#[... your checks ...]
# accept authenticated messages on submission port
accept
condition = ${if eq{$interface_port}{587}}
authenticated = *
#add_header = X-Submission: true
control = submission/sender_retain
Затем вам нужно определить прослушиватель аутентификации в Dovecot (в моей системе в /etc/dovecot/conf.d/10-master.conf):
unix_listener auth-client {
mode = 0660
user = Debian-exim
}