Предотвращение ненужных скачков с OpenSMTPD на OpenBSD
Я использую OpenSMTPD на OpenBSD вместе со spamd, spampd и spamassassin, DKIMproxy и dovecot. Моя настройка заключается в обработке как локальной электронной почты на сервере, так и (внешней) электронной почты для моего домена. Кажется, моя установка работает (все еще в стадии тестирования). Я счастлив, что смог реализовать мои настройки с файлом opensmtpd.conf из 17 строк, исключая комментарии и пробелы. Однако есть несколько вещей, которыми я не доволен. Я надеюсь, что кто-то может предложить, как решить эти вопросы:
При сборке у меня изначально не было спампа / спаммассеина. В этом конфиге была ровно одна команда "принять", принимающая электронную почту и доставляющая в dovecot. Сервер OpenSMTPD проверяет наличие адреса получателя и, если он не существует, возвращает ошибку 550 и не разрешает отправку электронной почты. Это хорошо.
После того, как я включил spampd и spamassassin, команда 'accept' забирает входящую электронную почту и пересылает spampd (который запускает spamassassin). После обработки spampd / spamassasin сообщение принимается другой командой принятия OpenSMTP, которая доставляет dovecot. Хотя это работает, есть некоторые нежелательные побочные эффекты, которые, если их не устранить, приведут к уязвимостям:
1) spampd / spamassassin будет обрабатывать все входящие сообщения для моего домена, в том числе и для получателей в этом домене, которые не существуют. Spampd/spamassassion не совсем "легкие" задачи. Вместе это увеличивает возможности для атаки DOS.
2) Все входящие сообщения для моего домена принимаются в первую очередь. В случае неизвестных получателей это будет обнаружено только после обработки spampd / spamassassin. Как только неизвестный получатель обнаружен, электронная почта о состоянии доставки отправит отправителю сообщение о том, что получатель неизвестен. Это позволяет злоумышленнику использовать мой сервер для отправки спамоподобной электронной почты любому действительному получателю, отправив электронное письмо на мой сервер с указанием в качестве отправителя любого действительного адреса электронной почты и в качестве получателя любого недопустимого получателя в моем домене.
Вопросы:
- Есть ли способ настроить OpenSMTPD таким образом, чтобы он немедленно отклонял неизвестных получателей (то есть как часть первоначальной отправки в OpenSMTPD), даже если включены spampd / spamassassin?
- Есть ли способ, которым я могу заставить сервер НЕ рассылать отклоненные сообщения для несуществующих получателей?
С уважением,
1 ответ
В новом синтаксисе 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>
команду, вместо того, чтобы принять ее и позже отправить отказ.