Например, есть у нас домен uvedomi.su, поддерживаемый на нашем хостинг сервере и есть некто, желающий скинуть ему почту:
telnet hosting.ru 25
Trying xx.xx.xx.xx...
Connected to hosting.ru.
Escape character is '^]'.
220 mailhosting.ru ESMTP Postfix
HELO
501 Syntax: HELO hostname
HELO 111
250 mailhosting.ru
MAIL FROM: 1111@111.ru
250 2.1.0 Ok
RCPT TO: nrg@uvedomi.su
530 5.7.1: Client host rejected: Authentication required
Вот такая оказия у меня вышла впервые с гуглом, который не смог доставить почту, получив такой отлуп.
Решение.
Вот мануал http://rupp.de/howto_install_postfix_before_qmail.html, где нас интересует часть про configure postfix и relay domains.
Итак, стандартно с Postfix идёт мегаскрипт /etc/postfix/dumpqmail, который конвертирует файл разрешенных для релея доменов из qmailовского /var/qmail/control/rcpthosts в Постфиксовый /etc/postfix/relaydomains. Запускаем: sudo /etc/postfix/dumpqmail, чтобы синхронизировать базы. После этого мой домен появился в Постфиксовом релей файле:
cat /etc/postfix/relaydomains | grep uvedo -i
uvedomi.su RELAY
Теперь, как понимаете, нам надо настроить запуск этой команды по крону :) Для этого в /etc/crontab добавляем:
*/5 * * * * root /etc/postfix/dumpqmail
А теперь в конфиг /etc/postfix/main.cf добавляем строчку (оно на данный момент есть там, но закомменчено, добавляем прямо там):
relay_domains = hash:/etc/postfix/relaydomains
Таким образом, Постфикс будет чекать, доверен ли домен для релея и в случае успеха будет пропускать почту без проверки по айпи.
Итого, если для дебага сейчас отключить проверку айпи (в main.cf комментим строку с smtpd_recipient_restrictions):
Наша почта снаружи до uvedomi.su пройдет успешно, а попытка релейнуть чужой домен будет отбита: [nrg@test.ru]: Relay access denied; from=
А теперь самое интересное... как не обращать внимания на айпи, если домен разрешен к релею? Сейчас я НЕ знаю, как это сделать. Помогайте :(
Решение найдено, модифицируем ограничения на получателя следующим образом:
smtpd_recipient_restrictions = permit_auth_destination, check_client_access mysql:/etc/postfix/mysql-psa-smtp_poplocks.cf, reject
Итого, логика такова: если домен доступен к релею, то почта принимается (permit сразу же); если недоступен, то переходим следующему правилу (это проверка валидности айпи) и если уж и оно сваливается, то отбрасываем клиента с ошибкой "Recipient address rejected: Access denied".
Да. Постфикс написали гениальные люди, такого мощного движка управления я не видел ни в одном почтовике!
No comments :
Post a Comment
Note: only a member of this blog may post a comment.