Что такое greylisting?
Представьте себе ситуацию, когда почтовый сервер отправляет письмо, а ему в ответ: “Сервер временно недоступен, попробуйте отправить письмо позже”. Порядочный сервер (не спамерский) повторит через некоторое время попытку. После второй попытки письмо успешно достигнет назначеного сервера. По этому принцыпу отсеиваются много спамерских писем.
Сам термин не применим к какому-то одному грей-листу. В этой статье я расскажу как настроить и проверить с MTA postfix. К exim’у также можно его прикрутить, но для него существуют свои, так сказать “заточенные” под него.
Обновляем порты и ставим сам postgrey:
#cd /usr/ports/mail/greylist && make install clean
После установки в папке с postfix’ом появятся файлы postgrey_whitelist_clients иpostgrey_whitelist_recipients, которые содержат список соотвественно “белых” отправителей и получателей. Здесь можно вводить как домены, так и отдельные адреса.
Теперь переходим к активированию postgrey в postfix’e. Открываем main.cf и ищем рестрикшнsmtpd_recipient_restrictions, и добавляем в него строку:
check_policy_service inet:127.0.0.1:10023
соотвественно для включения проверки через postgrey.
Осталось добавить строку postgrey_enable=”YES” в /etc/rc.conf, запустить postgrey и перечитать конфиг postfix’a. После этого отправляем письмо и смотрим в логи, обращая внимание на выделенные строки(при первой отправке он как бы карантиниться, при повторном – уже пропускается):
Sep 11 12:25:53 router1 postgrey[26557]: action=greylist, reason=new, client_name=router1, client_address=10.0.3.131, sender=skeletor@router1.router1.tld, recipient=admin@router1.tld
Sep 11 12:25:53 router1 postfix/smtpd[27372]: NOQUEUE: reject: RCPT from router1[10.0.3.131]: 450 4.2.0 : Client host rejected: Greylisted, see http://postgrey.schweikert.ch/help/router1.tld.html; from= to= proto=ESMTP helo=
Sep 11 12:25:53 router1 sendmail[27371]: n8BCPrOb027371: to=admin@router1.tld, ctladdr=skeletor (1001/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30041, relay=[127.0.0.1] [127.0.0.1], dsn=4.2.0, stat=Deferred: Name server: [127.0.0.1]: host name lookup failure
Sep 11 12:25:53 router1 postfix/smtpd[27372]: disconnect from router1[10.0.3.131]
Sep 11 12:59:42 router1 postfix/postfix-script[27692]: refreshing the Postfix mail system
Sep 11 12:59:53 router1 sendmail[27702]: n8BCxroo027702: from=skeletor, size=44,, nrcpts=1, msgid=<200909111259.n8BCxroo027702@router1.router1.tld>, relay=root@localhost
Sep 11 12:59:53 router1 postfix/smtpd[27703]: connect from router1[10.0.3.131]
Sep 11 12:59:53 router1 postgrey[26557]: action=pass, reason=triplet found, delay=2040, client_name=router1, client_address=10.0.3.131, sender=skeletor@router1.router1.tld, recipient=admin@router1.tld
Sep 11 12:59:53 router1 postgrey[26557]: cleaning up old logs...
Sep 11 12:59:53 router1 postfix/smtpd[27703]: C877374E606: client=router1[10.0.3.131]
Sep 11 12:59:53 router1 postfix/cleanup[27705]: C877374E606: message-id=<200909111259.n8BCxroo027702@router1.router1.tld>
Sep 11 12:59:53 router1 sendmail[27702]: n8BCxroo027702: to=admin@router1.tld, ctladdr=skeletor (1001/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30044, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as C877374E606)
Sep 11 12:59:53 router1 postfix/qmgr[27696]: C877374E606: from=, size=671, nrcpt=1 (queue active)
Sep 11 12:59:53 router1 postfix/smtpd[27703]: disconnect from router1[10.0.3.131]
Sep 11 12:59:53 router1 postfix/virtual[27706]: C877374E606: to=, relay=virtual, delay=0.2, delays=0.17/0.02/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
Sep 11 12:59:53 router1 postfix/qmgr[27696]: C877374E606: removed