LINUX.ORG.RU
ФорумAdmin

Postfix + SPF

 , , ,


0

1

Прикручивал тут поддержку SPF к Postfix по этому мануалу (используется костыль postfix-policyd-spf-python), однако работать оно отказалось, отвергая мои же письма, которые я слал через свой сервер из почтового клиента.

/var/log/mail.log

Jul  6 18:11:51 putin policyd-spf[22092]: Fail; identity=mailfrom; client-ip=88.88.88.88; helo=[192.168.1.3
3]; envelope-from=admin@putin.ru; receiver=gicdillax@gmail.com 
Jul  6 18:11:51 putin postfix/smtpd[22066]: NOQUEUE: reject: RCPT from unknown[88.88.88.88]: 550 5.7.1 <gicdillax@gmail.com>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.net/Why?s=mfrom;id=admin@putin.ru;ip=88.88.88.88;r=gicdillax@gmail.com; from=<admin@putin.ru> to=<gicdillax@gmail.com> proto=ESMTP helo=<[192.168.1.33]>
Здесь putin.ru мой сервер, 88.88.88.88 это мой домашний IP, с которого мой почтовый клиент подключался к серверу для отправки письма.

Возможно проблема в том что как это водится, мануалы опять устарели. Вроде бы как некоторые параметры постфикса перенесли из smtpd_recipient_restrictions в smtpd_relay_restrictions с версии 2.10 (у меня 2.11). Попробовал параметр check_policy_service unix:private/policy-spf разместить в smtpd_relay_restrictions, а не в smtpd_recipient_restrictions, как сказано в мануале. Вроде бы заработало, письма ходят, в заголовках писем изформация о SPF есть, но всё ли правильно сделано? Мой main.cf

письма ходят, в заголовках писем изформация о SPF есть,

При чём тут заголовки писем? Проверяй, что ты написал в DNS

Кроме того, насколько я помню, у всех реализаций spf есть возможность включить отладку

router ★★★★★
()
Ответ на: комментарий от router

При чём тут заголовки писем? Проверяй, что ты написал в DNS

Просто видно что на стороне моего сервера spf работает. В DNS всё на месте (@ IN TXT "v=spf1 mx -all").

Gicdillax
() автор топика

Ещё вопрос по SPF

Кстати, ещё вопрос по SPF. Как запретить приём писем, если хост, с которого отправлено, не соответствует домену в адресе отправителя?

postfix/smtpd[32448]: connect from 61-31-160-78.dynamic.tfn.net.tw[61.31.160.78]
policyd-spf[32454]: None; identity=helo; client-ip=61.31.160.78; helo=61-31-160-78.dynamic.tfn.net.tw; envelope-from=perishn495@gmail.com; receiver=admin@myserver.ru 
policyd-spf[32454]: Softfail; identity=mailfrom; client-ip=61.31.160.78; helo=61-31-160-78.dynamic.tfn.net.tw; envelope-from=perishn495@gmail.com; receiver=admin@myserver.ru 

Это писмо пришло в мой ящик. Softfail это потому что в SPF записи Гугла ~all?

Чтобы отвергать такие письма, следует установить Mail_From_reject = Softfail (Reject if result Softfail and Fail)? По умолчанию стоит Mail_From_reject = Fail.

Gicdillax
() автор топика
Ответ на: комментарий от Gicdillax

@ IN TXT «v=spf1 mx -all»

На сколько я помню должно быть «v=spf1 +mx -all»

Но вообще-то SPF который проверяешь ты, и SPF которым проверяют письма от тебя связаны только если ты со своего сервера отправляешь письмо себе.
Можно проверять по SPF приходящие к тебе письма и при этом не иметь SPF для твоего домена (или написать туда любую чуш (проблемы будут, но не при приёме почты, а при отправке)). И наоборот, можно имять для совего домена SPF, но не проверять SPF для входящих писем.
Так-что в этом посте лишнее либо описание настроки postfix-policyd-spf-python, либо содержимое DNS.

MrClon ★★★★★
()
Последнее исправление: MrClon (всего исправлений: 1)
Ответ на: Ещё вопрос по SPF от Gicdillax

Да, «~» символизирует Softfail. По RFC описывающему SPF Softfail означает что письмо нужно проверить тщательнее (подвергнуть каким-то дополнительным проверкам). Обрабатывать softfail SPF так-же как fail — противоречит стандарту и вообще чревато.

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Так-что в этом посте лишнее либо описание настроки postfix-policyd-spf-python, либо содержимое DNS.

Почему лишнее то? Понятно что SPF запись в DNS нужна для того чтобы спаммеры не подделывали мои адреса. Например, если на какой нибудь ящик Гугла придёт фейковое письмо с адреса моего сервера, то он пометит его как спам исходя из моей SPF записи.

А postfix-policyd-spf-python нужен для того чтобы мой сервер проверял SPF входящей почты.

Короче, настройки postfix-policyd-spf-python сейчас поставил такие:

HELO_reject = No_Check
Mail_From_reject = Softfail
Проверку HELO отключил потому что почему-то оно происходит первым и если срабатывает Pass, то mail from не проверяется и письмо доставляется. Этот спам пришёл, несмотря на фейковый HELO:
postfix/smtpd[32613]: connect from mail-bl2hn0247.outbound.protection.outlook.com[65.55.169.247]
policyd-spf[32619]: Pass; identity=helo; client-ip=65.55.169.247; helo=na01-bl2-obe.outbound.protection.outlook.com; envelope-from=sectery@soil.msu.ru; receiver=admin@myserver.ru
Потому что у helo hostname верный SPF. Однако у SPF записи soil.msu.ru яндексовский mx. Приоритет проверки захардкожен, как я понял.

Ну а вторая строчка обрабатывает softfail как reject. Дело в том что у большинства в SPF записах softfail (~all), у таких крупных серверов как Gmail, Yandex, Mail.ru и пр.

Gicdillax
() автор топика
Ответ на: комментарий от Gicdillax

Почему лишнее то?

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

MrClon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.