Итак, я приобрел 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 отправлять что-либо через него.

2 ответа2

2

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    = ${if eq{$tls_cipher}{}{}{*}}

Любой не-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 сообщениями только для наших доменов. Мы не передаем их сообщения другим доменам ни при каких обстоятельствах.

1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .