Я использую Mailman с Exim. Когда человек, не являющийся участником, отправляет сообщение в список рассылки, Mailman может быть настроен любым из следующих способов, каждый из которых имеет проблему:
Мне кажется, что лучшим вариантом было бы сделать то же самое, что и Exim, когда кто-то пытается отправить почту на несуществующий адрес: отклонить его во время соединения SMTP с кодом ошибки. Таким образом, реальные пользователи будут проинформированы о проблеме, отправив MTA, в то время как спам с поддельным отправителем не вызовет обратного рассеивания. Можно ли настроить Exim таким образом, чтобы он опрашивал Mailman и отклонял отправку списков не членов во время SMTP?
Конечно, это возможно. Просто чтобы дать вам подсказку: вы можете использовать $ run и $ runrc в ACL на этапе rcpt. См. Раздел 5. после "$ {run ..." под http://www.exim.org/exim-html-current/doc/html/spec_html/ch-string_expansions.html. Однако вам нужно написать сценарий, который вызывает "list_members список рассылки"или вы можете найти команду" withlist "вдохновляющей ...
Другой подход: подготовьте файл для каждого списка (сгенерированный сценарием), который содержит все элементы списка. Затем используйте поиск в своем операторе ACL для поиска адреса отправителя в этом файле. Ядро сценария будет примерно таким:
while read -r list; do
list_members "$list" > "$EXIM_HOME/mm-lists/$list"
done <<< "$(list_lists -b)"
Соответствующий ACL может быть примерно таким:
deny
domains = +local_domains
condition = ${if exists {MAILMAN_HOME/lists/$local_part/config.pck}{1}{0}}
! senders = ${lookup{$sender_address}lsearch{CONFDIR/mm-lists/$local_part}{$sender_address}}
message = Only list members are allowed to post.
Но есть проблемы с таким механизмом, например, проблемы с гонками при перезаписи файлов, содержащих элементы, возможно, проблемы безопасности, asf.
Я не пробовал приведенный выше код и не знаю, действительно ли это работает. Просто чтобы дать вам представление о том, что попробовать.
Ваша мотивация требует некоторого исправления: вы не избегаете отказов на поддельные адреса отправителя, когда решаете, в какое время SMTP принимать сообщение или нет. Вы просто не берете на себя ответственность за доставку сообщения о недоставке, вы оставляете это отправляющему MTA. Отправлять сообщения о возврате на поддельные адреса сложно, и это может привести к зависанию сообщений, что нежелательно, но, вероятно, это достаточная мотивация, чтобы попробовать то, что вы просили.