У меня есть почтовый сервер под управлением Exim и Dovecot, поддерживаемый MySQL для виртуальных пользователей. Spamassassin настроен и, похоже, работает разумно, но отправка помеченного спама в папку «спам» для получателя не настроена. Мы используем формат maildir для хранения.
Как я буду заниматься обработкой того, куда нужно доставлять почту? Я бы подумал, что procmail может это сделать, но я не вижу достойных конфигураций для этой конкретной настройки.
Вкратце: - Exim - Spamassassin - Виртуальные пользователи, корень каждого пользователя = / home / mail / $ domain / $ local_part - Хотите, например, доставлять спам в / home / mail / $ domain / $ local_part / spam /
TIA
Вот кое-что, что должно работать нормально. Я основывал это на стандартном маршрутизаторе / транспорте "локальной доставки", но добавил условия в заголовке X-Spam-Flag, который я устанавливаю ранее в соответствующем ACL. Если вы не знаете, как это сделать, дайте мне знать, и я исправлю ответ.
Я делаю нечто подобное, но на уровне домена, и моя установка, вероятно, не подойдет вам.
Прежде всего, вам понадобится роутер. Маршрутизаторы обрабатываются по порядку, поэтому поместите это в удобное место - обычно до того, как вы поймаете обычную почту, потому что это будет иметь приоритет.
spamcheck:
debug_print = "R: spamcheck for $local_part@$domain"
driver = accept
check_local_user
user = mail
condition = "${if def:h_X-Spam-Flag: {yes}{no}}"
transport = local_spam_delivery
Теперь вам нужен транспорт local_spam_delivery, поэтому поместите его в любом месте вашего раздела транспортов:
local_spam_delivery:
debug_print = "T: local_spam_delivery for $local_part@$domain"
driver = appendfile
directory = /home/mail/$domain/$local_part/spam/
maildir_format
delivery_date_add
envelope_to_add
return_path_add
Если вы не хотите использовать его как maildir, удалите команду maildir_format. Возможно, вам придется немного изменить правила, особенно в отношении настроек пользователей и групп и т. Д.
Если в моем приведенном выше примере чего-то не хватает, я замечаю, что есть аналогичный пример, задокументированный Вот
Я придумал следующее, чтобы отправлять спам на почту под названием «Нежелательная почта» для каждого домена.
mysql_delivery:
driver = appendfile
maildir_format
directory = "${if and { {def:h_X-Spam-Flag:} {eq {$h_X-Spam-Flag}{YES}}} {/home/mail/${domain}/${local_part}/.Junk}{/home/mail/${domain}/${local_part}} }"
Думаю, я слишком много думал об этом, когда изначально разместил вопрос. Вышеупомянутое, похоже, работает достаточно хорошо. Однако я приму ответ Дэниела.
Вы можете легко сделать это с помощью пары маршрутизаторов. Как вариант, вы можете использовать для этого файл фильтра exim.
В моем ~ / .forward есть следующее, но вы можете легко использовать что-то подобное для своего файла глобального фильтра.
if $spam_score_int is not "" then
if $spam_score_int is above 49 then save $home/Maildir/.SPAM/ finish endif
endif
Использование вашего пути должно работать. Просто замените его в примере и не забудьте косую черту в конце, иначе вы можете выполнить доставку в формате mbox.