Рейтинг:3

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

флаг us

Мой сервер Postfix получает спам от постоянно меняющегося набора доменных имен, но с постоянным шаблоном в файле журнала, начинающимся со строки предупреждение: имя хоста X не разрешается в адрес Y. Ни одно законное (любительское) электронное письмо не имеет этого шаблона, поэтому я хотел бы заблокировать электронные письма, связанные с этим сообщением.

Есть ли способ полностью заблокировать эти электронные письма в конфигурации Postfix, например, в файле main.cf?

Вот раздел файла журнала, показывающий шаблон, присутствующий при поступлении спама:

10 мая, 21:47:46 localhost postfix/smtpd[313324]: предупреждение: имя хоста trojan.kringeas.co.uk не разрешается в адрес 104.129.30.93: имя или служба неизвестны
10 мая, 21:47:46 localhost postfix/smtpd[313324]: подключение от неизвестного [104.129.30.93]
10 мая 21:47:46 локальный постфикс/smtpd[313324]: 2AF1D101825: client=unknown[104.129.30.93]
10 мая, 21:47:46 постфикс/очистка локального хоста [313331]: 2AF1D101825: message-id=<dO7GXAfoNocg1hEkeyqMfulg7RZ0aamifKqrB8JpUH8.ofI9TFu7lSCnlxwicxT5GA@meansfolk.sa.com>
10 мая, 21:47:46 localhost postfix/qmgr[294981]: 2AF1D101825: from=<[email protected]>, size=4241, nrcpt=1 (очередь активна)
10 мая 21:47:46 локальный постфикс/труба [313333]: 2AF1D101825: to=<[email protected]>, orig_to=<[email protected]>, relay=dovecot, задержка=0,11, задержки=0,08/0,01 /0/0.02, dsn=2 .0.0, статус=отправлено (доставлено через сервис dovecot)
10 мая 21:47:46 локальный постфикс/qmgr[294981]: 2AF1D101825: удалено
10 мая 21:47:46 локальный постфикс/smtpd[313324]: отключиться от неизвестного[104.129.30.93] ehlo=1 почта=1 rcpt=1 данные=1 quit=1 команды=5

Вот мой файл main.cf: Обратите внимание, что он включает в себя: smtpd_client_restrictions = reject_unknown_reverse_client_hostname который я пробовал после прочтения эта почта.

каталог_очередей = /var/spool/postfix
каталог_команд = /usr/sbin
daemon_directory = /usr/lib/postfix/sbin
data_directory = /var/lib/postfix
mail_owner = постфикс
inet_protocols = все
мой пункт назначения = локальный хост, локальный хост.локальный домен
unknown_local_recipient_reject_code = 550
alias_maps = хеш:/и т.д./псевдонимы
alias_database = хэш:/и т.д./псевдонимы
debug_peer_level = 2
отладчик_команда =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id и сон 5

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = постдроп
html_directory = нет
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.10.1/samples
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES


имя_хоста = xxxx.net
мои сети = 127.0.0.0/8
message_size_limit = 30720000
виртуальный_алиас_домен =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf, hash:/etc/postfix/virtual
виртуальный_почтовый_домен = прокси:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
виртуальные_uid_maps = статические: 5000
virtual_gid_maps = статический: 5000
smtpd_client_restrictions = reject_unknown_reverse_client_hostname
smtpd_sasl_type = голубятня
smtpd_sasl_path = частный/авторизация
smtpd_sasl_auth_enable = да
сломанный_sasl_auth_clients = да
smtpd_sasl_authenticated_header = да
smtpd_recipient_restrictions = allow_mynetworks, allow_sasl_authenticated, reject_unauth_destination
smtpd_use_tls = да
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
virtual_create_maildirsize = да
виртуальный_maildir_extended = да
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $tvir_my_networks
виртуальный_транспорт = голубятня
dovecot_destination_recipient_limit = 1
inet_interfaces = все
smtp_tls_security_level = может
disable_vrfy_command = да
smtpd_milters = инет:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = принять
Рейтинг:7
флаг za

Просто замените

smtpd_client_restrictions = reject_unknown_reverse_client_hostname

с

smtpd_client_restrictions = reject_unknown_client_hostname .

От Руководство по постфиксу:

reject_unknown_client_hostname (с Postfix < 2.3: reject_unknown_client)
    Отклонить запрос, когда 
      1) не удается сопоставить IP-адрес клиента-> имя, или 
      2) не удается выполнить сопоставление имени-> адреса, или
      3) сопоставление имени->адреса не соответствует IP-адресу клиента.
    Это более сильное ограничение, чем reject_unknown_reverse_client_hostname. 
    функция, которая срабатывает только при условии 1) выше.
    Параметр unknown_client_reject_code указывает код ответа для
    отклоненные запросы (по умолчанию: 450). Ответ всегда 450 в случае, если
    адрес->имя или имя->поиск адреса не удался из-за временной проблемы. 

Однако это ваше убеждение неверно:

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

Мои клиенты время от времени жалуются, и бывает, что иногда обратное имя хоста не соответствует адресу HELO, или разрешается в другой адрес, или вообще не разрешается, и это совершенно запрошенная почта. По сути, текущие RFC предписывают только существование записи PTR имени хоста HELO, но ничего не говорите о его значении или существовании записи A под этим именем или его значением. Технически законный сервер может опустить все остальное и по-прежнему соответствовать RFC, в то время как вы блокируете его с помощью этой конфигурации. Чтобы исправить это, я поместил все эти проверки в smtpd_recipient_restrictions, и добавил check_sender_access hash://... непосредственно перед ним, поэтому я могу выборочно исключить некоторые письма из этой проверки по доменному имени отправителя или полному адресу электронной почты отправителя:

smtpd_client_restrictions = [по умолчанию]
smtpd_recipient_restrictions = 
...
    хэш check_sender_access:/etc/postfix/spam_exceptions,
    reject_unknown_client_hostname,
...

Вы не можете использовать check_sender_access в smtpd_client_restrictions потому что вы получаете адрес конверта отправителя только для проверки во время ПОЧТА От: фаза.

Этот spam_exceptions файл имеет простую структуру:

затронутый.домен OK
...

Я просто добавляю домены в этот файл, когда разрешаю жалобы. А у меня уже довольно большая коллекция!

флаг cn
Да, RFC должен быть более четким по этому поводу.
флаг us
Спасибо за этот метод.Стоит упомянуть одну вещь: чтобы заставить это работать, мне нужно было запустить «postmap /etc/postfix/spam_exceptions» и «systemctl reload postfix». Это может потребоваться после каждого изменения spam_exceptions.
Nikita Kipriyanov avatar
флаг za
Да. Его также можно настроить для использования данных, например, из MySQL, PostgreSQL, SQLite, LDAP и т. д., в этом случае любое обновление таблицы не потребует запуска и перезагрузки postmap. // Также будьте очень осторожны с этой конфигурацией. `reject_unauth_destination` должен появиться **перед** этим `check_sender_access`.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.