У нас есть услуга, которую мы предлагаем одному из наших клиентов, которая отправляет отчеты своим клиентам. К сожалению, проверка адресов электронной почты нашими клиентами не всегда является наилучшей, поэтому, когда они отправляют нам пакет для отправки, мы обычно видим много писем, которые не удается отправить из-за неправильного написания общих доменов (например, gnail.com, htmail .com и т. д.). Мы собираем возвратные сообщения, чтобы передать их нашему клиенту для исправления их списка адресов электронной почты, но до тех пор, пока не произойдет возврат / отчет о недоставке, эти сообщения остаются в нашем postfix mailq до тех пор, пока не истечет срок действия очереди. Повторные попытки отправки снова и снова.
Есть ли какой-нибудь хороший способ, чтобы postfix отправлял отчет о недоставке для этих сообщений сразу же при первой ошибке, вместо того, чтобы пытаться снова и снова? Мы хотим, чтобы это происходило только с плохими доменами, хотя иногда мы видим, что сообщения откладываются из-за серых списков, и они исчезают со второй попытки.
Я пробовал свой Google-foo, но, похоже, мне не удается эта задача ...
Начните с отказа от полностью недействительной почты, добавив reject_non_fqdn_recipient
и reject_unknown_recipient_domain
в соответствующую таблицу ограничений.
Postfix может дополнительно REJECT
сообщения через check_recipient_mx_access
и check_recipient_access
, но то, как вы генерируете соответствующий поиск, зависит от допустимого уровня ошибки (отклонения не-опечаток / не-отклонения опечаток).
В идеале никогда не доставляйте почту в домен получателя с малымрасстоянием Левенштейнадо гораздо более популярного домена получателя. Чем больше разница в громкости между назначенным получателем и похожей-звучащей целью, тем менее вероятно, что получатель является предполагаемым(человек не просто использует большую службу электронной почты, которая пишет почти какgmail.com
).
Гораздо проще и сработало для меня таблица pcre
, в которой домен с наиболее частыми ошибками был жестко запрограммирован, например:
# reject recipient MX table
typosquatter.example REJECT
shady-data-broker.example REJECT
# reject recipient domain table
# skip the correct one
example.com DUNNO
# broadly reject all minor permutations
..ample.com REJECT
ex..ple.com REJECT
exa..le.com REJECT
#...
example.co REJECT
Я держал ложные срабатывания на приемлемом уровне, никогда не сопоставляя одновременно изменения и перестановки TLD -все крупные получатели в любом случае не слишком похожи на другие законные предприятия. Почему мне этого было достаточно, хотя я не сопоставил все перестановки? Поскольку 90% опечаток находятся в одной группе из 5% возможных перестановок, он обнаружил большинство опечаток.
Если у вас есть журналы хотя бы за несколько месяцев, вы, вероятно, можете неплохо начать, просто выбирая тайм-ауты очереди из тайм-аутов соединения, вручную удаляя ложные срабатывания и заполняя список, как я сделал выше.