Назад | Перейти на главную страницу

Сделайте так, чтобы Exim отправлял сообщения о недоставке почтовому мастеру вместо отправителя, для нелокального отправителя

У меня есть несколько псевдонимов электронной почты, которые пересылаются на внешние хосты. В настоящее время, если внешний хост отклоняет сообщение, Exim генерирует рикошет и отправляет его исходному отправителю. Это плохо, потому что если внешний хост отклоняет сообщение как спам (обычный случай), то я являюсь источником спама обратного рассеивания.

Таким образом, если отправитель не является местным, я хотел бы вместо этого отправить сообщение о недоставке почтмейстеру (мне). В качестве альтернативы отправка все отказов почтмейстеру было бы достаточно.

Документация Exim подсказки что это можно сделать ("когда сообщение не может быть доставлено ... Exim отправляет сообщение исходному отправителю, или альтернативный настроенный адрес", курсив мой), но я не мог найти, как это сделать.

Например, вот отрывок из журнала, показывающий, что создается спам обратного рассылки (в этом случае предполагаемый исходный сервер не принимает соединения). foo@nacha.net является предполагаемым отправителем спама по адресу bar@reidster.net, который затем пересылается на baz@gmail.com; Затем GMail отклоняет сообщение, и мой сервер отправляет сообщение foo@nacha.net. Я хочу, чтобы отскок ушел в postmaster@reidster.net вместо. (Имена пользователей зашифрованы; остальная часть журнала дословная.)

2011-10-03 12:03:08 1RAkyw-0000cj-45 <= foo@nacha.net H=(gyajnj.com [113.190.35.111] P=esmtp S=33927 id=000e01cc51a7$ceee1700$6f23be71@nacha.net
2011-10-03 12:03:09 1RAkyw-0000cj-45 ** baz@gmail.com <bar@reidster.net> R=dnslookup T=remote_smtp: SMTP error from remote mail server after end of data: host gmail-smtp-in.l.google.com [74.125.47.26]: 552-5.7.0 Our system detected an illegal attachment on your message. Please\n552-5.7.0 visit http://mail.google.com/support/bin/answer.py?answer=6590 to\n552 5.7.0 review our attachment guidelines. i3si13239001yhk.107
2011-10-03 12:03:09 1RAkyz-0000cm-H5 <= <> R=1RAkyw-0000cj-45 U=Debian-exim P=local S=35124
2011-10-03 12:03:09 1RAkyw-0000cj-45 Completed
2011-10-03 12:03:30 1RAkyz-0000cm-H5 nacha.net [64.212.215.180] Connection timed out
2011-10-03 12:03:30 1RAkyz-0000cm-H5 == foo@nacha.net R=dnslookup T=remote_smtp defer (110): Connection timed out

Вот соответствующий маршрутизатор:

dnslookup:
  debug_print = "R: dnslookup for $local_part@$domain"
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  same_domain_copy_routing = yes
  # ignore private rfc1918 and APIPA addresses
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/16 :\
                        172.16.0.0/12 : 10.0.0.0/8 : 169.254.0.0/16 :\
                        255.255.255.255
  no_more

Некоторые правила глупы, потому что приносят больше вреда, чем пользы! И люди, которые их защищают и создают, это знают. Меня бы больше заботила этика почтмейстера, чем глупые правила. И я ненавижу глупые правила и, очевидно, людей, устанавливающих эти правила. Если вы, как и я, знаете о последствиях (см. Выше) и хотите нарушить правила, тогда обязательно,

1) Установите проверку отправителя и получателя, чтобы обезопасить себя ИЛИ

2) Отменить или заморозить все отказы нулевого почтмейстера. Сделайте это с помощью системного фильтра exim

system_filter = /etc/exim/screwtherules.exim
vi /etc/exim/screwtherules.exim
if $sender_address is ""
then
if ${lookup{${extract{2}{@}{$recipients}}}lsearch{/etc/localdomains}{yes}{no}} is "no"
then
fail text "Delayed bounce message ignored"
seen finish
endif
endif

3) ИЛИ создайте ACL во время проверки acl_smtp_data для пересылки, сбоя или блокировки электронных писем с нулевым рикошетом, отправляемых или не отправляемых определенным хостам. Вы можете извлечь полученную информацию из заголовка, как описано в https://grepular.com/Exim_Trick_to_Extract_Received_Header_IP_Addresses

Ваш подход нарушает RFC 5321, где вы должны доставить или вернуть отправителю. Есть только очень ограниченные исключения: http://tools.ietf.org/html/rfc5321#section-6.2

Итак, у вас есть три варианта

  1. Доставить все отказы почтмейстеру
    Это неверно. Без исключений. Потому что есть ситуации, когда вы отклоняете законные отказы (превышение квоты, ошибки диска и т. Д.) Для всех отправителей. Законные клиенты и злые спамеры.
  2. Доставка отказов от пересылаемой почты к почтмейстеру
    Это законно. Но это оставляет дыру, в которой вы отбрасываете отказы, которые не связаны с нарушениями контента (спам, вирусы), а с неизвестным пользователем, заполненным почтовым ящиком и т. Д.
  3. Доставить почтмейстеру сообщения о нарушениях содержания
    Идеальное решение, но с расширенной конфигурацией.

Выберите вариант 3. Но лучше запретить пересылку писем или усилить фильтрацию спама перед пересылкой этих писем.

Это можно сделать с помощью errors_to директива в маршрутизаторе. Я считаю, что Exim также поддерживает некоторые условия, чтобы делать это выборочно.