Postfix и NDN (non-delivery notification)

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Locus
рядовой
Сообщения: 15
Зарегистрирован: 2009-07-09 7:03:10

Postfix и NDN (non-delivery notification)

Непрочитанное сообщение Locus » 2009-07-16 8:07:53

Дано:
  • Кривоватый Postfix, 1 шт.
  • Болван, 1 шт.
Заметил очень неприятную особенность. При отлупе спам-ботов Постфикс шлет NDN указанным отправителям. Ничего не подозревающие владельцы ящиков, от имени которых ведут рассылки спам-боты, получают уведомления о невозможности доставки писем, которые они (владельцы) не отправляли. Вот пара примеров.

Первый:

Код: Выделить всё

Jul 16 07:55:28 mail postfix/smtpd[47047]: connect from unknown[115.61.65.87]
Jul 16 07:55:31 mail postfix/smtpd[47047]: B1D6116484A: client=unknown[115.61.65.87]
Jul 16 07:55:33 mail postfix/cleanup[47143]: B1D6116484A: message-id=<7481289277.9Z9KCBU7346252@>
Jul 16 07:55:33 mail postfix/qmgr[43333]: B1D6116484A: from=<reptilesjb9@gmail.com>, size=1210, nrcpt=1 (queue active)
Jul 16 07:55:33 mail postfix/pipe[47145]: B1D6116484A: to=<admin@my-company.ru>, relay=dovecot, delay=1.7, delays=1.7/0/0/0.02, dsn=5.1.1,
    status=bounced (user unknown)
Jul 16 07:55:33 mail postfix/cleanup[47143]: 33354164850: message-id=<20090716025533.33354164850@mail.my-company.ru>
Jul 16 07:55:33 mail postfix/bounce[47150]: B1D6116484A: sender non-delivery notification: 33354164850
Jul 16 07:55:33 mail postfix/qmgr[43333]: 33354164850: from=<>, size=2919, nrcpt=1 (queue active)
Jul 16 07:55:33 mail postfix/qmgr[43333]: B1D6116484A: removed
Jul 16 07:55:34 mail postfix/smtpd[47047]: disconnect from unknown[115.61.65.87]
Jul 16 07:55:36 mail postfix/smtp[47151]: 33354164850: to=<reptilesjb9@gmail.com>, relay=gmail-smtp-in.l.google.com[209.85.218.59]:25, delay=3.4,
    delays=0/0/0.22/3.2, dsn=5.1.1, status=bounced (host gmail-smtp-in.l.google.com[209.85.218.59] said: 550-5.1.1 The email account that you
    tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces.
    Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 11si12078115bwz.95 (in reply to RCPT TO command))
Jul 16 07:55:36 mail postfix/qmgr[43333]: 33354164850: removed
Jul 16 08:05:21 mail postfix/anvil[43338]: statistics: max connection count 1 for (smtp:115.61.65.87) at Jul 16 07:55:28
Второй, незначительно отличающийся от первого:

Код: Выделить всё

Jul 16 09:38:23 mail postfix/smtpd[47771]: connect from unknown[117.1.171.212]
Jul 16 09:38:26 mail postfix/smtpd[47771]: NOQUEUE: reject: RCPT from unknown[117.1.171.212]: 550 5.1.1 <sasha@my-company.ru>: Recipient address
    rejected: User unknown in local recipient table; from=<faultilymfx33@gmail.com> to=<sasha@my-company.ru> proto=ESMTP helo=<[117.1.171.212]>
Jul 16 09:38:26 mail postfix/smtpd[47771]: NOQUEUE: reject: RCPT from unknown[117.1.171.212]: 550 5.1.1 <opt@my-company.ru>: Recipient address
    rejected: User unknown in local recipient table; from=<faultilymfx33@gmail.com> to=<opt@my-company.ru> proto=ESMTP helo=<[117.1.171.212]>
Jul 16 09:38:26 mail postfix/smtpd[47771]: 3AE0C164840: client=unknown[117.1.171.212]
Jul 16 09:38:26 mail postfix/smtpd[47771]: 3AE0C164840: reject: RCPT from unknown[117.1.171.212]: 550 5.1.1 <mail@my-company.ru>: Recipient address
    rejected: User unknown in local recipient table; from=<faultilymfx33@gmail.com> to=<mail@my-company.ru> proto=ESMTP helo=<[117.1.171.212]>
Jul 16 09:38:27 mail postfix/cleanup[47821]: 3AE0C164840: message-id=<6772155128.N5785V1I413312@>
Jul 16 09:38:27 mail postfix/qmgr[43333]: 3AE0C164840: from=<faultilymfx33@gmail.com>, size=1836, nrcpt=3 (queue active)
Jul 16 09:38:27 mail deliver(a.ivanov): msgid=<6772155128.N5785V1I413312@>: saved mail to INBOX
Jul 16 09:38:27 mail postfix/pipe[47824]: 3AE0C164840: to=<a.ivanov@my-company.ru>, orig_to=<iap@my-company.ru>, relay=dovecot, delay=1.7,
    delays=1.7/0/0/0.01, dsn=2.0.0, status=sent (delivered via dovecot service)
Jul 16 09:38:27 mail deliver(a.ivanova): msgid=<6772155128.N5785V1I413312@>: saved mail to INBOX
Jul 16 09:38:27 mail postfix/pipe[47824]: 3AE0C164840: to=<a.ivanova@my-company.ru>, orig_to=<dostavka@my-company.ru>, relay=dovecot, delay=1.7,
    delays=1.7/0.01/0/0.01, dsn=2.0.0, status=sent (delivered via dovecot service)
Jul 16 09:38:27 mail deliver(b.petrova): msgid=<6772155128.N5785V1I413312@>: saved mail to INBOX
Jul 16 09:38:27 mail postfix/pipe[47828]: 3AE0C164840: to=<b.petrova@my-company.ru>, orig_to=<dostavka@my-company.ru>, relay=dovecot, delay=1.7,
    delays=1.7/0.01/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Jul 16 09:38:27 mail deliver(v.sidorov): msgid=<6772155128.N5785V1I413312@>: saved mail to INBOX
Jul 16 09:38:27 mail postfix/pipe[47824]: 3AE0C164840: to=<v.sidorov@my-company.ru>, orig_to=<dostavka@my-company.ru>, relay=dovecot, delay=1.7,
    delays=1.7/0.01/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Jul 16 09:38:27 mail postfix/pipe[47827]: 3AE0C164840: to=<admin@my-company.ru>, relay=dovecot, delay=1.7, delays=1.7/0.01/0/0.02, dsn=5.1.1,
    status=bounced (user unknown)
Jul 16 09:38:27 mail postfix/cleanup[47821]: B2387164850: message-id=<20090716043827.B2387164850@mail.my-company.ru>
Jul 16 09:38:27 mail postfix/bounce[47832]: 3AE0C164840: sender non-delivery notification: B2387164850
Jul 16 09:38:27 mail postfix/qmgr[43333]: B2387164850: from=<>, size=3549, nrcpt=1 (queue active)
Jul 16 09:38:27 mail postfix/qmgr[43333]: 3AE0C164840: removed
Jul 16 09:38:29 mail postfix/smtpd[47771]: disconnect from unknown[117.1.171.212]
Jul 16 09:38:31 mail postfix/smtp[47835]: B2387164850: to=<faultilymfx33@gmail.com>, relay=gmail-smtp-in.l.google.com[209.85.218.12]:25, delay=3.8,
    delays=0/0/0.67/3.1, dsn=5.1.1, status=bounced (host gmail-smtp-in.l.google.com[209.85.218.12] said: 550-5.1.1 The email account that you
    tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces.
    Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 12si12323178bwz.98 (in reply to RCPT TO command))
Jul 16 09:38:31 mail postfix/qmgr[43333]: B2387164850: removed
И как с этим бороться? Я включал reject_unverified_sender (равно как и *_client), но это не вариант: во-первых, статус почтовика быстро меняется с Good на Unverified (каждый запрос на наличие ящика считается за отправку), а во-вторых, владельцам реальных засвеченных ящиков продолжают отправляться уведомления.

Документацию курил, пока не вставило.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

atrium
мл. сержант
Сообщения: 88
Зарегистрирован: 2008-08-19 15:35:47

Re: Postfix и NDN (non-delivery notification)

Непрочитанное сообщение atrium » 2009-07-16 12:10:45

Т.е как я понял спамеры шлют тебе письмо на несуществующий адрес, твой сервак в ответ шлёт сообщение реальным юзерам о недоставке письма?


atrium
мл. сержант
Сообщения: 88
Зарегистрирован: 2008-08-19 15:35:47

Re: Postfix и NDN (non-delivery notification)

Непрочитанное сообщение atrium » 2009-07-16 16:40:16

Всего лишь сделайте проверку получателей!

Вам необходимо включить параметр:
smtpd_reject_unlisted_recipient=yes
А также в зависимости от того где хранятся получатели использовать параметр
smtpd_sender_login_maps
и посомтрите рестрикшены

Locus
рядовой
Сообщения: 15
Зарегистрирован: 2009-07-09 7:03:10

Re: Postfix и NDN (non-delivery notification)

Непрочитанное сообщение Locus » 2009-07-17 13:39:32

atrium писал(а):Вам необходимо включить параметр: smtpd_reject_unlisted_recipient=yes
Вы будете смеяться, но...

Код: Выделить всё

smtpd_recipient_restrictions =
    permit_sasl_authenticated,

    reject_rbl_client dnsbl.sorbs.net,
    reject_rbl_client cbl.abuseat.org,

    reject_unlisted_recipient,
    reject_unauth_destination
А также в зависимости от того где хранятся получатели использовать параметр smtpd_sender_login_maps
М.м.м... каким образом Вы предлагаете его использовать? У меня:

Код: Выделить всё

smtpd_sender_login_maps = hash:/usr/local/etc/postfix/virtual
и посомтрите рестрикшены
Вот они:

Код: Выделить всё

disable_vrfy_command = yes
strict_rfc821_envelopes = yes
broken_sasl_auth_clients = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes

smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_security_options =
    noanonymous,
    noactive,
    nodictionary

smtpd_helo_restrictions =
    permit_mynetworks,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname

smtpd_sender_login_maps = hash:/usr/local/etc/postfix/virtual
smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    reject_non_fqdn_sender

smtpd_recipient_restrictions =
    permit_sasl_authenticated,

    reject_rbl_client dnsbl.sorbs.net,
    reject_rbl_client cbl.abuseat.org,

    reject_unlisted_recipient,
    reject_unauth_destination,
    check_policy_service inet:127.0.0.1:10023
Что смотреть, чего, на Ваш взгляд, не хватает?

atrium
мл. сержант
Сообщения: 88
Зарегистрирован: 2008-08-19 15:35:47

Re: Postfix и NDN (non-delivery notification)

Непрочитанное сообщение atrium » 2009-07-17 14:09:30

а что находится в файле
smtpd_sender_login_maps = hash:/usr/local/etc/postfix/virtual
и что даёт выдаёт команда postmap при поиске пользователя в файле hash:/usr/local/etc/postfix/virtual

Locus
рядовой
Сообщения: 15
Зарегистрирован: 2009-07-09 7:03:10

Re: Postfix и NDN (non-delivery notification)

Непрочитанное сообщение Locus » 2009-07-17 14:30:50

atrium писал(а):а что находится в файле smtpd_sender_login_maps = hash:/usr/local/etc/postfix/virtual

Код: Выделить всё

$ cat /usr/local/etc/postfix/virtual
a.ivanov 	a.ivanov
a.ivanova	a.ivanova
b.petrova	b.petrova
v.sidorov	v.sidorov
И так далее...
и что даёт выдаёт команда postmap при поиске пользователя в файле hash:/usr/local/etc/postfix/virtual

Код: Выделить всё

$ postmap -q a.ivanov /usr/local/etc/postfix/virtual
a.ivanov
$ postmap -q v.sidorov /usr/local/etc/postfix/virtual
v.sidorov
И так далее...

atrium
мл. сержант
Сообщения: 88
Зарегистрирован: 2008-08-19 15:35:47

Re: Postfix и NDN (non-delivery notification)

Непрочитанное сообщение atrium » 2009-07-17 15:00:44

Попробуйте самостоятельно направить сообщение на не существующий адрес. Что на это ответит ваш сервак?

Locus
рядовой
Сообщения: 15
Зарегистрирован: 2009-07-09 7:03:10

Re: Postfix и NDN (non-delivery notification)

Непрочитанное сообщение Locus » 2009-07-17 18:23:46

Как оно и должно происходить:
5.1.1 Recipient address rejected: User unknown in local recipient table.
Проблема появляется только при общении со спам-ботами, с помощью Trunderbird'а и OE я не смог добиться того же эффекта. Во время SMTP-сессии, после успешного прохождения HELO и MAIL FROM, боту или иному клиенту на каждый RCPT TO мой Постфикс отвечает 250... (принято) или 550... (идите лесом), в зависимости от существования ящиков. Но! В некоторых случаях — только в некоторых — помимо общения с собственно клиентом-ботом Постфикс пытается отправить уведомление NDN. Если же предварительные проверки не пройдены (хело кривой, айпи в RBL, далее со всеми остановками), Постфикс не предпринимает таких попыток.

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

moury
сержант
Сообщения: 249
Зарегистрирован: 2009-02-06 23:02:40
Откуда: Москва
Контактная информация:

Re: Postfix и NDN (non-delivery notification)

Непрочитанное сообщение moury » 2009-07-18 11:07:07

Почитайте DSN_README.

Для полной блокировки DSN добавьте в main,cf:

Код: Выделить всё

smtpd_discard_ehlo_keywords = silent-discard, dsn
Сисадмин - вождь апачей

Locus
рядовой
Сообщения: 15
Зарегистрирован: 2009-07-09 7:03:10

Re: Postfix и NDN (non-delivery notification)

Непрочитанное сообщение Locus » 2009-07-20 7:47:52

Ага, то что нужно. Спасибо!