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

Dovecot + Exim = реле не разрешено

Я установил простой почтовый сервер с Exim и Dovecot. Поскольку, очевидно, я не хочу иметь открытый сервер ретрансляции, я хочу ограничить доступ извне. Я прикинул следующую конфигурацию:

  1. Dovecot прослушивает порты 587 и 993, выполняет аутентификацию / авторизацию с моим сервером LDAP, который работает нормально.
  2. Exim не выполняет никакой аутентификации пользователя сам по себе, только получает внешнюю почту и рассылает ее по почте пользователей. Все идет нормально.
  3. Вот моя проблема - если я хочу отправить электронное письмо, мой MUA обращается к модулю отправки Dovecot -> он аутентифицирует и авторизует пользователя -> и передает электронное письмо в Exim. В Dovecot я настроил:
    submission_relay_host = 127.0.0.1
    submission_relay_port = 25

и добавил в Exim соответствующий ACL, который разрешает ретрансляцию только с localhost, поскольку Dovecot работает на той же машине. Несмотря на то, что я не использую публичный IP-адрес в конфигурации, все же Exim решает, что соединение установлено с публичного IP моего сервера, и разрешает ретрансляцию только в том случае, если я добавляю его в ACL Exim.

Два вопроса:

  1. Насколько серьезной является проблема безопасности, если я разрешаю этот публичный IP-адрес для ACL Exim? Я могу представить атаку с подменой IP-адреса, но злоумышленнику придется подделать IP-адрес моего сервера, что, как я считаю, сделало бы связь между двумя одинаковыми IP-адресами невозможной ... Верно? Поэтому предпочтительный вариант:
  2. Как я могу заставить Dovecot разговаривать с Exim, используя loopback, а не публичный IP? Dovecot выясняет, что он должен использовать общедоступный IP-адрес для связи с Exim, или Exim разрешает IP-адрес localhost в общедоступный? В / etc / hosts у меня есть только запись для 127.0.0.1 (localhost), и даже нет общедоступного IP-адреса с полным доменным именем ...

У вас будет меньше проблем, если вы позволите 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
  }