- Для чего необходим tls/ssl сертификат при рассылке писем, влияет ли он на доставляемость писем?
- Как изменить ip-адрес, с которого отправляется почта
- Как изменить порты
- Как ограничить количество исходящих писем
- Количество потенциально уязвимых публичных серверов
- Один ip-адрес для всех доменов сервера
- Разные ip-адреса для разных доменов
- Уязвимость
- Файл конфигурации
- Через панель управления ispmanager 5 business
- Через терминал
Для чего необходим tls/ssl сертификат при рассылке писем, влияет ли он на доставляемость писем?
1. Для чего необходим TLS/SSL сертификат при рассылке писем?
2. Письмо подписывается SSL сертификатом только при рассылке методом SMTP или же при всех видах (mail, sendmail, smtp) ?
3. Влияет ли он на доставляемость писем?
4. Стоит Exim, пользуюсь PHP mailer(последняя версия). Необходимо ли дополнительно указывать на сертификат в настройках PHP mailer, или же он подгружается из настроек exim?
Как изменить ip-адрес, с которого отправляется почта
Вы можете настроить отправку почты как с одного IP-адреса для всех доменов сервера, так и с разных IP для каждого домена.
Как изменить порты
Узнать, какие порты Exim слушает по умолчанию, можно с помощью команды:
root@bug17815:~# netstat -anp|grep exim tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 3068/exim4 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3068/exim4 tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 3068/exim4 tcp6 0 0 :::465 :::* LISTEN 3068/exim4 tcp6 0 0 :::25 :::* LISTEN 3068/exim4 tcp6 0 0 :::587 :::* LISTEN 3068/exim4
Чтобы изменить прослушиваемые порты, откройте файл конфигурации Exim. За порты отвечают строки:
daemon_smtp_ports = 25 : 465 : 587 tls_on_connect_ports = 465
Внесите необходимые изменения и перезапустите почтовый сервер одной из команд:
systemctl restart exim systemctl restart exim4
Снова проверяем список прослушиваемых портов, чтобы убедиться, что изменения приняты.
root@bug17815:/etc/exim4# netstat -anp|grep exim tcp 0 0 0.0.0.0:464 0.0.0.0:* LISTEN 3813/exim4 tcp 0 0 0.0.0.0:24 0.0.0.0:* LISTEN 3813/exim4 tcp 0 0 0.0.0.0:584 0.0.0.0:* LISTEN 3813/exim4 tcp6 0 0 :::464 :::* LISTEN 3813/exim4 tcp6 0 0 :::24 :::* LISTEN 3813/exim4 tcp6 0 0 :::584 :::* LISTEN 3813/exim4
Как ограничить количество исходящих писем
Чтобы не попасть в спам за рассылку большого количества писем, вы можете установить лимит на отправку исходящей почты.
Количество потенциально уязвимых публичных серверов
По статистике крупного хостинг-провайдера E-Soft Inc на 1 сентября, на арендованных серверах версия 4.92 используется в более чем 70% хостов.
Статистика компании E-Soft Inc
Если обратиться к поисковой системе Shodan, то из 5,250,000 в базе серверов:
Таким образом, публично известных и доступных Exim потенциально уязвимых серверов насчитывается порядка 1.5 млн.
Поиск Exim-серверов в Shodan
Один ip-адрес для всех доменов сервера
В файле конфигурации в секции transports добавьте строку:
interface = 188.120.24.34
Где 188.120.24.34 — необходимый IP-адрес.
После внесения изменений перезапустите почтовый сервер одной из команд:
systemctl restart exim systemctl restart exim4
Разные ip-адреса для разных доменов
В файле конфигурации в секции transports должна быть строка следующего вида:
interface = <;${lookup{$sender_address_domain}lsearch{/etc/exim4/domainips}}
Откройте файл, указанный в пути:
/etc/exim4/domainips
Укажите IP-адреса для нужных доменов:
Уязвимость
Уязвимость присутствует при использовании библиотек как GnuTLS, так и OpenSSL при установке защищенного TLS-соединения.
По словам разработчика Heiko Schlittermann, файл конфигурации в Exim по умолчанию не использует TLS, однако многие дистрибутивы во время установки создают необходимые сертификаты и включают защищенное соединение. Также более новые версии Exim устанавливают опцию tls_advertise_hosts=* и генерируют необходимые сертификаты.
depends on the configuration. Most distros enable it by default, but Exim needs a certificate key to work as a TLS server. Probably Distros create a Cert during setup. Newer Exims have the tls_advertise_hosts option defaulting to “*” and create a self signed certificate, if none is provided.
Сама же уязвимость заключается в некорректной обработке SNI (Server Name Indication, технология, введенная в 2003 в RFC 3546 для запроса клиентом корректного сертификата для доменного имени, Распространение стандарта TLS SNI / Блог компании WEBO Group / Хабр) в ходе TLS-рукопожатия. Злоумышленнику достаточно отправить SNI, оканчивающийся бэкслешем (“”) и нулл-символом (“”).
Исследователи из компании Qualys обнаружили баг в функции string_printing(tls_in.sni), который заключается в некорректном экранировании “”. В результате происходит запись обратного слеша в неэкранированном виде в файл заголовков print spool. Далее этот файл с привилегированными правами считывается функцией spool_read_header(), что ведет к переполнению кучи (heap overflow).
Стоит отметить, что на данный момент разработчики Exim создали PoC уязвимости с выполнением команд на удаленном уязвимом сервере, но в публичном доступе он пока отсутствует. В силу простоты эксплуатации бага это всего лишь вопрос времени, причем довольно короткого.
С более детальным исследованием компании Qualys можно ознакомиться здесь.
Использование SNI в TLS
Файл конфигурации
Основные настройки почтового сервера Exim находятся в конфигурационном файле. Вы можете найти его по одному из путей:
/etc/exim4/exim4.conf /etc/exim/exim.conf /etc/exim/configure
Если там его нет, проверьте наличие файла exim4.conf.template / exim.conf.template. Перейдите в директорию с этим файлом, после чего скопируйте его в правильный файл конфигурации:
cp -pr exim4.conf{.template,} / cp -pr exim.conf{.template,}
Через панель управления ispmanager 5 business
ISPmanager Business (в Lite данного функционала нет) позволяет указать для каждого пользователя максимальное количество писем, которое может быть отправлено с каждого почтового ящика этого пользователя в час.
Заходим в раздел Учетные записи — Пользователи — выделяем нужного пользователя и нажимаем кнопку Изменить. В поле Количество отправляемых писем выставляем ограничение и нажимаем кнопку Ок, чтобы применить изменения.
Через терминал
Откройте файл конфигурации и настройте директиву следующим образом:
acl_not_smtp = acl_not_smtp
begin acl
acl_not_smtp:
deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
ratelimit = 50 / 1h / leaky
accept
acl_check_rcpt:
deny message = Sender rate SMTP overlimit - $sender_rate / $sender_rate_period
ratelimit = 100 / 1h / leaky
accept hosts = net-lsearch;/etc/exim/whitelist
Перезагрузите почтовый сервер, чтобы изменения вступили в силу:
systemctl restart exim systemctl restart exim4
В итоге выставляется ограничение в 50 писем в час для почты, отправленной не по SMTP (например, через PHP mail), и в 100 писем для отправки через SMTP. В файле /etc/exim/whitelist создается белый список хостов, на которые лимит не действует.
Если вы хотите ограничить отправку писем от определённых почтовых доменов, в конфигурационном файле необходимо добавить раздел перед begin acl:
