Я запускаю OpenSMTPD на OpenBSD вместе со spamd, spamd и spamassassin, DKIMproxy и dovecot. Моя настройка заключается в обработке как локальной электронной почты на сервере, так и (внешней) электронной почты для моего домена. Моя установка, кажется, работает (все еще на этапе тестирования). Я рад, что смог реализовать свою настройку с помощью файла opensmtpd.conf из 17 строк, не считая комментариев и пробелов. Однако есть несколько вещей, которыми я не доволен. Я надеюсь, что кто-нибудь может подсказать, как решить эти проблемы:
При создании установки у меня изначально не было spamd / spamassessin. В этой конфигурации была ровно одна команда «принять», которая собирала письмо и доставляла его в голубятню. Сервер OpenSMTPD проверяет наличие адреса получателя и, если он не существует, возвращает ошибку 550 и не разрешает отправку электронного письма. Это хорошо.
После того, как я включил spamd и spamassassin, команда accept собирает входящие сообщения электронной почты и пересылает их в spamd (который запускает spamassassin). После обработки spamd / spamassasin сообщение подхватывается другой командой accept OpenSMTP, которая доставляется в dovecot. Хотя это работает, есть некоторые нежелательные побочные эффекты, которые, если их не исправить, могут привести к уязвимостям:
1) spamd / spamassassin будет обрабатывать все входящие сообщения для моего домена, а также сообщения для получателей этого домена, которых не существует.Spamd/spamassassion — не совсем «легкие» задачи. Вместе это увеличивает возможности для DOS-атаки.
2) Все входящие сообщения для моего домена сначала принимаются. В случае неизвестных получателей это будет обнаружено только после обработки spamd / spamassassin. Как только неизвестный получатель будет обнаружен, демон почтовой программы отправит отправителю электронное письмо со статусом доставки, в котором будет указано, что получатель неизвестен. Это позволяет злоумышленнику использовать мой сервер для отправки электронной почты, похожей на спам, любому допустимому получателю, отправив электронное письмо на мой сервер с любым допустимым адресом электронной почты в качестве отправителя и любым недействительным получателем в моем домене.
Вопросы:
С уважением,
В новом синтаксисе opensmtpd 6.4+ я тоже задавался этим вопросом. В настоящее время у меня был файл со всеми моими доменами, и у меня было только правило, которое гарантировало, что я буду получать электронную почту -только для своих доменов. Это позволяет отправлять сообщения для пользователей, которые могут не существовать, что приводит к возврату сообщений о возврате.
table vdoms "/mail/db/vdomains"
...
match from any for domain <vdoms> action your_spam_filter_action
Чтобы ограничить только ваших пользователей, вам нужно иметь таблицу всех ваших действительных адресов электронной почты -, а затем использовать rcpt-to
для вашего сопоставления. Это может быть дублирование некоторой информации, которая у вас уже есть в других таблицах псевдонимов/пользователей.
Предположим, что у вас есть таблица /etc/mail/addrs
:
bob@example.com
mary@example.com
sue@example.net
В вашем smtpd.conf
вам понадобится
table addrs "/mail/db/addrs"
...
...
match from any for rcpt-to <addrs> action your_spam_filter_action
Теперь opensmtp будет отклонять электронную -почту по команде RCPT TO: <wrongperson@example.com>
, а не принимать ее и позже отправив отказ.