Настройка Exim4, которая позволяет мне отправлять электронные письма, не становясь открытым релеем

797
Drux

Итак, я приобрел VPS и домен ( my_domain.comскажем), и теперь я хотел бы настроить свою собственную почтовую инфраструктуру на основе exim4 для целей обучения. Чтобы не создавать открытую ретрансляцию, мне нужно некоторое базовое понимание о лучших методах аутентификации.

Я изначально понимаю, что MTA (exim4) должен действовать в двух ролях, когда дело доходит до аутентификации:

  • Когда мой MUA (скажем, Apple Mail на MacBook) подключается к нему через SMTP, он должен настаивать на аутентификации. Если адрес отправителя me@my-domain.com, имя пользователя / пароль для (Debian) пользователя meна VPS должны служить. Мой интернет-провайдер назначает переменные IP-адреса, поэтому я не смог зафиксировать MAU для определенного адреса и не знаю применимого диапазона. В любом случае, после такой аутентификации MTA должен отправить (ретранслировать?) Сообщение соответствующему MTA ( mail.your-domain.comскажем) без дальнейшей аутентификации.

  • Когда другой MTA ( mail.your-domain.comскажем,) связывается с моим MUA через SMTP, он должен сохранять его для доставки только тогда, когда целевой домен находится my_domain.com(то есть разрешить это как локальный домен), и выкидывать его в противном случае (т.е. не действовать как открытый ретранслятор).

Мои вопросы имеют два аспекта: правильное ли мое базовое понимание и будет ли следующий набор ответов для dpkg-reconfigure exim4-configдостижения этой установки / цели?

mail name: my_domain.com IP-addresses to listen on for incoming SNMP connection: (the VPS) local domains: mail;my_domain.com domains to relay mail for: (none) machines to relay mail for: (none) keep DNS-queries minimal: no delivery method for local mail: mbox format in /var/mail split configuration file into small files: no root and postmaster mail recipient: root 

В настоящее время я озадачен, потому что здесь не упоминается какая-либо аутентификация (или на каком основании MTA может даже отличить SMTP-соединения от MUA или другого MTA) и от того, будут ли «сбрасываться» сообщения на домены, отличные от локальных доменов. Для меня это выглядит так, как если бы мой MTA мог получать сообщения my-domain.comиз любой точки мира, не быть открытым ретранслятором, но и не позволять моему MUA отправлять что-либо через него.

0
Это выходит за рамки возможностей debconf, вам нужно будет все настроить через собственный файл конфигурации exim. grawity 5 лет назад 1

2 ответа на вопрос

2
Kondybas

eximявляется мощным и достаточно гибким, чтобы действовать в любой роли, которую вы хотите. Но для нормальной работы SMTP единственный сценарий, требующий аутентификации, это «кто-то хочет отправить или передать сообщение через меня». Передача и ретрансляция должны быть строго ограничены для предотвращения отлучения DNSBL. Если eximобслуживать какую-либо подсеть, s & r обычно ограничивается этой подсетью. Но если клиентские хосты бродят по Интернету с динамически меняющимися IP-адресами из разных подсетей, единственная возможность ограничить клиентов - это аутентификация.

Прежде всего вы должны включить шифрование SMTP с помощью SSL / TLS.

daemon_smtp_ports = 25 : 465 : 587  tls_on_connect_ports = 465 tls_certificate = /path/exim.crt tls_privatekey = /path/exim.key 

opensslДостаточно самозаверяющей пары, созданной с помощью . Шифрование является опцией для простого SMTP на порту 25 или MSA на 587 и обязательным для SMTPS на 465.

Аутентификация будет возможна только для зашифрованных клиентов, чтобы предотвратить пропуск входа в систему через незашифрованное соединение:

auth_advertise_hosts = ${}{}{*}} 

Любой не-emtpy, $tls_cipherсгенерированный, когда TLS установлен, является хорошим признаком, чтобы начать аутентификацию.

Теперь мы можем использовать ACL:

acl_smtp_connect = acl_conn acl_smtp_rcpt = acl_rcpt acl_smtp_data = acl_data  begin acl ..... acl_rcpt: accept authenticated = * accept hosts = : +relay_from_hosts require domains = +relay_to_domains : +local_domains deny 

Здесь мы принимаем сообщение для s & r в трех случаях:

  1. если клиент аутентифицирован
  2. если клиент находится в списке известных хостов / подсетей
  3. если сообщение является входящим сообщением для одного из наших доменов.
  4. последнее denyне требуется, как denyнеявное третье правило, но для лучшего понимания мне нравится помещать явное окончательное принятие / отклонение во всех случаях.

Другие MTA обычно передаются по третьему правилу, независимо от того, подтверждены они или нет. Мы не можем требовать авторизацию от других MTA, поскольку это не является обязательным для RFC. Но мы строго ограничиваем все внешние MTA сообщениями только для наших доменов. Мы не передаем их сообщения другим доменам ни при каких обстоятельствах.

587 - это не порт TLS при подключении; шифрование для него все еще должно быть установлено через STARTTLS. grawity 5 лет назад 1
@ Grawity Да, вы абсолютно правы Kondybas 5 лет назад 0
Спасибо, это позволит мне начать. Просто для пояснения: я мой MUA (скажем, Apple Mail) связываюсь с exim4 для отправки электронной почты, это считается «ретранслировать сообщение через меня» с точки зрения exim4, верно? Drux 5 лет назад 0
Вот мой предыдущий ответ на аналогичный вопрос: https://serverfault.com/questions/626803/why-use-dovecot-and-postfix-sendmail/626809#626809 Kondybas 5 лет назад 0
1
wurtel

Настройка, которую предлагает конфигурация Debian, предназначена для обычного локального использования. Более сложные настройки, такие как аутентификация, потребуют ручного редактирования конфигурации.

Вероятно, легче перенастроить разделенный конфиг. Затем вы можете включить аутентификацию в /etc/exim4/conf.d/auth/. Файл 30_exim4-config_examples содержит множество закомментированных примеров, которых должно быть достаточно, чтобы помочь вам на вашем пути.

plain_serverФрагмент кода использует passwdфайл в / и т.д. / exim4 /, который содержит имена пользователей и пароли, разделенные двоеточием. По умолчанию exim будет предлагать аутентификацию только тогда, когда соединение зашифровано, и это хорошо.

Я использую сервис аутентификации dovecot для проверки пользователей в exim; таким образом, если пользователь может получить доступ к dovecot (например, IMAP), он может использовать те же учетные данные для отправки электронной почты через exim.

Похожие вопросы