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 в трех случаях:
- если клиент аутентифицирован
- если клиент находится в списке известных хостов / подсетей
- если сообщение является входящим сообщением для одного из наших доменов.
- последнее
deny
не требуется, какdeny
неявное третье правило, но для лучшего понимания мне нравится помещать явное окончательное принятие / отклонение во всех случаях.
Другие MTA обычно передаются по третьему правилу, независимо от того, подтверждены они или нет. Мы не можем требовать авторизацию от других MTA, поскольку это не является обязательным для RFC. Но мы строго ограничиваем все внешние MTA сообщениями только для наших доменов. Мы не передаем их сообщения другим доменам ни при каких обстоятельствах.