Входящие электронные письма отклонения, которые используют Ваш собственный домен в качестве отправителя

Было бы хорошо отклонить входящие электронные письма, которые используют один из моих виртуальных доменов как адрес отправителя не будучи законным моим пользователем.

Я знаю, что могу отклонить входящие электронные письма, которые используют существующее использование псевдонима/имени учетной записи smtpd_sender_restrictions=reject_sender_login_mismatch, это действительно однако все еще позволяет взломщикам использовать несуществующий emailaddress с одним из моих виртуальных доменов. (Который одобрен в отношении обнаружения спама).

Что лучший способ состоит в том, чтобы отклонить входящую корреспонденцию, которая использует один из моих виртуальных доменов и не аутентифицируется, чтобы сделать так?

SPF, а также DKIM настроен, но настроен к SoftFail, из-за проблем с mailinglists и вперед. Я не ищу SPF или DKIM, но решение для постфиксного сервера, который является MX вышеупомянутых доменов.

7
задан 5 May 2015 в 18:30
4 ответа

Я нашел два возможных метода, но, возможно, есть способ лучше.

1-й метод:

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    permit

Теперь я изменил мои smtpd_sender_login_maps , чтобы вернуть запись admin , если домен существует в таблице доменов. Таким образом, запись возвращается, даже если адрес электронной почты не существует как maibox / псевдоним, но не тогда, когда внешний домен является адресом отправителя.

table = domain
query = SELECT username AS allowedUser FROM mailbox WHERE username="%s" AND deleted_at IS NULL \
UNION SELECT goto FROM alias WHERE address="%s" AND active = 1 \
UNION select 'admin' from domain where domain = '%d'

2-й метод:

В этом подходе используется check_sender_access поиск, который возвращает действие отклонения, если домен является виртуальным, а пользователь не sasl_authenticated .

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    check_sender_access proxy:mysql:$config_directory/mysql_reject_virtual_domains.cf,
    permit

mysql_reject_virtual_domains.cf :

table = domain
query = select 'Reject 530 SMTP authentication is required' from domain where domain = '%d'

3-й метод (спасибо masegaloeh ):

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated
    reject_unlisted_sender,
    permit

Я не знаю, сколько cpu-load / SQL-запросов генерирует reject_unlisted_sender , так как он проверяет довольно много вещей:


Запрос, чтобы SMTP-сервер Postfix отклонял почту от неизвестных адреса отправителя, даже если не указано явное ограничение доступа reject_unlisted_sender . Это может замедлить распространение поддельной почты от червей или вирусов.

Адрес всегда считается "известным", если он соответствует виртуальному (5) псевдониму или каноническому (5) сопоставлению.

  • Домен отправителя соответствует $ mydestination, $ inet_interfaces или $ proxy_interfaces, но отправитель не указан в $ local_recipient_maps, а $ local_recipient_maps не равен нулю.
  • Домен отправителя соответствует $ virtual_alias_domains, но отправитель не указан в $ virtual_alias_maps.
  • Домен отправителя соответствует $ virtual_mailbox_domains, но отправитель не указан в $ virtual_mailbox_maps, а $ virtual_mailbox_maps не равен нулю.
  • Домен отправителя соответствует $ relay_domains, но отправитель не указан в $ relay_recipient_maps и $ relay_maps_recipient не равно нулю.

10
ответ дан 2 December 2019 в 23:24

Вы должны попытаться реализовать хотя бы одно из следующего (лучше оба):

1
ответ дан 2 December 2019 в 23:24

Правильный способ - настроить SPF для вашего домена и включить SPF в MTA. Тогда вы получите защиту не только для вашего собственного домена, но и для всех других доменов с включенным SPF.

1
ответ дан 2 December 2019 в 23:24

Еще один 1-й метод с отдельным запросом без объединений:

virtual_sender_mailbox_maps.cf

query = SELECT '%s' AS email FROM domains WHERE name='%d' AND active=TRUE

main.cf

smtpd_sender_login_maps = ${proxysql}virtual_sender_mailbox_maps.cf
smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    permit
1
ответ дан 2 December 2019 в 23:24

Теги

Похожие вопросы