Я читаю о функции access_db в sendmail. Видимо, она выглядит многообещающей как превентивный способ остановить спам.
У меня есть несколько вопросов, связанных с тем, как используется access_db. Так что в основном я указываю набор правил в файле доступа, и sendmail проверяет эту базу данных, чтобы увидеть, следует ли что-то делать с электронной почтой.
- А как насчет писем, которые не подходят ни под одно из указанных правил? Каково поведение по умолчанию?
- Могу ли я использовать регулярное выражение? Например, "To:*@spam.com REJECT" будет работать?
- Если у меня есть только «paypal.com RELAY», означает ли это, что мой sendmail будет принимать и отправлять электронные письма, отправленные с paypal.com или направленные на этот адрес?
Большое спасибо!
решение1
- Если правило не совпадает с правилами в access_db, то оно не влияет на принятие или отклонение сообщения. Сообщение продолжает обрабатываться остальными правилами.
- access_db (и любые подстановочные знаки, но не регулярные выражения) описаныздесь. Если вам нужны регулярные выражения, вам придется либо написать собственные наборы правил, которые имитируют поведение access_db, но использовать карту регулярных выражений, либо использовать milter, напримерMIMEDefang, илиmilter-регулярное выражение.
- Лучше всего использовать правила, начинающиеся с простых IP-адресов или доменов
From:
илиConnect:
вместо них, чтобы не думать, касается ли правило доменного имени хоста, который подключается к вашему хосту, или доменного имени адреса отправителя (они не обязательно совпадают).
решение2
Как использовать Regex в Sendmail
Мне присылали спам со всех числовых доменов, таких как 3456.com. Сначала я добавил 10 000 записей в access.db, это было смешно.
В файле sendmail.mc, в самом низу, после почтовых программ, вы можете добавить регулярное выражение, подобное этому.
LOCAL_CONFIG
Kallnumbers regex -a@MATCH @[0-9]+\.com
LOCAL_RULESETS
SLocal_check_mail
R$+ $: $(allnumbers $1 $)
R@MATCH $#error $: "550 Rejected."
Вы можете скопировать большую часть текста дословно, просто изменив несколько вещей.
Определите свое регулярное выражение и дайте ему идентификатор, добавьте к нему префикс K
«мой идентификатор» allnumbers
и «моё регулярное выражение»[0-9]+\.com
Kallnumbers regex -a@MATCH @[0-9]+\.com
последние два определяют соответствие и предпринятое действие
R$+ $: $(allnumbers $1 $)
R@MATCH $#error $: "550 Rejected.
Я понимаю, что это выглядит очень нелепо, но это вписывается в общую картину.