Итак, приступим. Исходные данные:
1. хостинг сервер с cPanel
2. большие проблемы с датацентрами и блокирующими листами
3. нужно надежное решение для устранения данной ситуации и предотвращение ее в будущем.
Решение:
1. Настройка cPanel.
2. Настройка почтового сервера.
1. Настройка cPanel.
Нам нужно настроить cPanel так, что бы пользователи не могли добавлять топовые домены, например google, hotmail и другие, для отправки почты с этих доменов и приема почты на них.
Делается это следующим образом:
1. логинимся в WHM
2. выбираем «Tweak Settings»
3. включаем опцию «Prevent users from parking/adding on common internet domains. (i.e. hotmail.com, aol.com)»
Теперь нам нужно запретить пользователя добавлять домены, которые принадлежат другому пользователю на том же сервере или в кластере.
Делается это следующим образом:
1. логинимся в WHM
2. выбираем «Tweak Settings»
3. выключаем опцию «Allow users to Park/Addon Domains on top of domains owned by other users. (probably a bad idea)»
Остается еще две лазейки, например добавление не зарегистрированного домена и домена, который находится на другом, не вашем, сервере и отправка с этого домена почты. Эта проблема решаема, но тут есть один нюанс. Если вы отключите эти возможности, то возникнуть проблемы с добавлением таких доменов. Спросите, зачем вам добавлять такие домены? Отвечу, например, ваш пользователь переезжает с одного хостинг провайдера на ваш хостинг и прежде чем перенести содержимое, ему нужно добавить домен.
Если вы все же решили убрать такую возможность, то делается так:
1. логинимся в WHM
2. выбираем «Tweak Settings»
3. выключаем опции «Allow Creation of Parked/Addon Domains that resolve to other servers ...» и «Allow Creation of Parked/Addon Domains that are not registered»
На этом настройка cPanel закончена, переходим на второй этап.
2. Настройка почтового сервера.
Тут тоже все просто, нужно добавить пару ACL в конфигурацию почтового сервера, делается это так:
1. логинимся в WHM
2. выбираем «Service Configuration»
3. выбираем «Exim Configuration Editor», нажимаем на «Advanced Editor»
Теперь вы находитесь в редакторе конфигурации почтового сервера. Ниже приведен список команд конфигурации почтового сервера, которые нужно добавить.
- Код: Выделить всё
log_selector = +arguments +subject +smtp_connection
#
acl_not_smtp = acl_local_send
#
domainlist remote_domains = lsearch;/etc/remotedomains
#
...
begin acl
acl_local_send:
# Разрешить отправку с доменов ваших локальных пользователей
accept condition = ${if match_domain{${domain:${address:$h_from:}}}{+local_domains}{yes}{no}}
# Разрешить отправку с любого домена на домены ваших локальных пользователей
accept condition = ${if match_domain{${domain:${address:$h_to:}}}{+local_domains}{yes}{no}}
# Разрешить отправку с вашего домена. Замените domain.com на ваш домен
accept condition = ${if match_domain{${domain:${address:$h_from:}}}{domain.com}{yes}{no}}
# Разрешить отправку на домены MX для которых указан на другой сервер
accept condition = ${if match_domain{${domain:${address:$h_to:}}}{+remote_domains}{yes}{no}}
deny message = "Relaying not permitted"
log_message = "Headers (Sender Address :: From :: To :: Mail from domain) - $sender_address \
:: $header_from :: $header_to :: ${domain:${address:$h_from:}} - is not allowed"
...
check_recipient:
...
#==========
deny message = "Your IP: $sender_host_address : Your domain $sender_address_domain is not allowed in header From"
hosts = *
authenticated = *
condition = ${if match_domain{$sender_address_domain}{+local_domains}{no}{yes}}
deny message = "Your IP: $sender_host_address : Your domain $sender_address_domain is not allowed in header From"
hosts = 127.0.0.1
condition = ${if match_domain{$sender_address_domain}{+local_domains}{no}{yes}}
#==========
# ориентир
accept hosts = *
authenticated = *
Теперь вкратце опишу наши изменения.
Мы разрешили отправку сообщений с сервера:
1) на все локальные домены
2) на домены, которые принадлежат вашим пользователям, но MX записи указывают на другие сервера
3) со всех локальных доменов
4) с вашего персонального домена (для получения отчетов от cpanel)
5) обработка SMTP соединений и проверка поля From в сообщении, чтобы пользователи не использовали ваш сервер в качестве open-relay.
Все остальные сообщения будут блокироваться.
На этом конфигурация окончена, все должно замечательно работать.
Если у вас возникли какие-то трудности или вы нашли в этой статье какие-то неточности, то, пожалуйста, сообщите мне об этом любым удобным для вас способом.

