CentOS 6 с cPanel / WHM. Хакеры продолжали каким-то образом проникать в наши почтовые аккаунты cPanel и рассылать спам с наших серверов. Они либо подделали адрес ОТ, либо просто использовали "ответ", чтобы жертвы увидели домен, выбранный спамерами, например lottery.microsoft.com или что-то в этом роде. Я решил заблокировать сервер и попросил хостинговую компанию предотвратить любую исходящую или входящую почту с нелокальными доменами.
Они внесли некоторые изменения в /etc/exim.conf, добавив в файл то, что похоже на код C. Я не знал, что файлы конфигурации могут содержать программные конструкции. Кто-нибудь может объяснить значение строк ниже?
Предполагается, что добавленный ими код предотвращает отправку электронной почты К или ИЗ нелокальных доменов. Но теперь я хотел бы изменить его, чтобы разрешить отправку электронной почты К нелокальному, но продолжать предотвращать отправку электронной почты ОТ. Я также хотел бы, чтобы исходящие электронные письма с ответом не были локальными.
Я предполагаю #
закомментированные строки. Откуда эти переменные? Что allow_fail
и no_more
? Оператор if работает или прокомментирован #
?
#ifdef DCconfig_local
# configtype=local
#
# Stand-alone system, so generate an error for mail to a non-local domain
nonlocal:
debug_print = "R: nonlocal for $local_part@$domain"
driver = redirect
domains = !example.com
qualify_domain = example.com
# domains = ! +local_domains
allow_fail
data = :fail: Mailing to remote domains not supported
no_more
#.endif
В exim
Файлы конфигурации имеют синтаксис, позволяющий выполнять сложную обработку. Это язык, который использовался для включенного вами фрагмента конфигурации. Язык Документация для Exim документирует конфигурацию.
Возможно, что письмо отправлено другим программным обеспечением, кроме exim
. Если он был отправлен exim
, передача должна быть записана в /var/log/exim/mainlog
или повернутый журнал за период.
По умолчанию exim
конфигурация обычно достаточно безопасна, если переменные конфигурации установлены правильно. Обычно он конфигурируется с несколькими определениями макросов, начиная с DC
. В вашем случае я бы ожидал DCconfig_internet
включен. Исправьте обработку получателя, и вы сможете отменить изменения, внесенные вашим провайдером. Чтобы отменить его, просто включите директивы препроцессора вверху и внизу этого раздела.
Ограничение ретрансляции обычно обрабатывается в ACL получателя. Проверьте файл конфигурации на наличие начала строки acl_smtp_rcpt
. Затем найдите значение справа от задания. Это будет ACL, используемый для проверки получателей. Прочтите эту проверку для accept
и deny
блоков, пока вы не дойдете до строки вроде message = relay not permitted
. Этот блок должен выглядеть примерно так:
require
message = relay not permitted
domains = +local_domains : +relay_to_domains
Если вы разрешаете ретрансляцию, электронная почта либо принимается до того, как вы достигнете этого блока, либо этот блок разрешает внешние домены. Для них должны быть определения вроде:
hostlist relay_from_hosts = <; 127.0.0.1 ; ::1
domainlist local_domains = example.com
domainlist relay_to_domains =
Если local_domains или relay_to_domains содержат подстановочный знак ('*'), вы можете быть открытым ретранслятором.
Чтобы ответить на ваши конкретные вопросы:
#
является разделителем комментариев.#ifdef
и #.endif
отключены директивы препроцессора. Читает .ifdef
и .endif
при включении и работать как c
директивы препроцессора.allow_fail
- это команда конфигурации, которая позволяет маршрутизатору выйти из строя, не возвращая текущее сообщение.no_more
- это конфигурационная директива, которая останавливает маршрутизацию, если этот маршрутизатор успешно работает.По коду невозможно определить, ifdef
верно или неверно.
Значение директив следующее:
если домен получателя НЕ example.com
затем активирован роутер
если домен отправителя не указан, qualify_domain
example.com
используется
позволять :fail:
как данные перенаправления
перенаправить сообщение на :fail:
и ответ отправителю: Mailing to remote domains not supported
остановить отправку сообщения