Показаны сообщения с ярлыком postfix. Показать все сообщения
Показаны сообщения с ярлыком postfix. Показать все сообщения

вторник, 11 февраля 2014 г.

Использование Gmail в качестве почтового шлюза для Postfix

Если ваш IP адрес "проклят", то при попытке доставить почту на сервера Gmail вы увидите что-то наподобие этого

status=bounced (host gmail-smtp-in.l.google.com[173.194.70.26] said: 550-5.7.1 [87.xx.xx.xx] The IP you're using to send mail is not authorized to 550-5.7.1 send email directly to our servers. Please use the SMTP relay at your 550-5.7.1 service provider instead. Learn more at 550 5.7.1 http://support.google.com/mail/bin/answer.py?answer=10336 g47si26393674eev.48 - gsmtp (in reply to end of DATA command))

Выход прост -  если вам не нужна возможность доставлять почту от разных людей (в моем случае письма только от систем мониторинга), то можно создать почтовый ящик Gmail и слать почту через него. В этом случае локальный почтовый сервер выступает в роли авторизованного клиента Gmail. Из минусов пожалуй только перезапись From: (вроде это можно как-то настраивать).

Если postfix еще не установлен, то самое время его установить

# aptitude install postfix ca-certificates

Сказать postfix, что нужно доставлять почту через релей

# vim /etc/postfix/main.cf

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

Указать данные авторизации в Gmail в файле /etc/postfix/sasl_passwd

# vim /etc/postfix/sasl_passwd

[smtp.gmail.com]:587    USERNAME@gmail.com:YOURPASSWORD

После нужно выставить правильные разрешения на файл паролей и создать его хешированную версию

# chmod 0400 /etc/postfix/sasl_passwd
# postmap /etc/postfix/sasl_passwd

Остается только дать postfix доступ к сертификату удостоверяющего центра Gmail (это thawte)

# cp /etc/ssl/certs/Thawte_Premium_Server_CA.pem /etc/postfix/cacert.pem

Перезагружаем конфигурацию postfix и пробуем отправить тестовое письмо

# service postfix reload
# echo 'test message' | mail -s 'relayhost test' someuser@gmail.com

пятница, 27 декабря 2013 г.

Postfix - отбрасывание почты, адресованной любому домену, кроме явно разрешенных

В процессе разработки или саппорта часто используются базы данных в которых содержится информация о реальных адресах электронной почты. Чтобы не допустить случайную отправку писем на реальные (клиентские) адреса в нашей локальной сети запрещены соединения на 25 порт к внешним серверам. Почту для внутренних серверов пересылает почтовый шлюз для которого открыта лазейка на 25 порт нашего внешнего почтового сервера. Таким образом почта может быть либо отправлена внутри локальной сети, либо на ящик, находящийся на нашем внешнем почтовом сервере.

Эта мера достаточно эффективна, но периодически приходят уведомления о недоставленных письмах. Когда их 1-2 в день с этим можно спокойно жить, но когда их становится 30-50 штук, то читать их нет смысла, а каждый раз удалять их из почтового ящика postmaster'а лениво.

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

Для реализации мне потребовалось создать файл карты /etc/postfix/transport, который выглядит примерно так:

example.local  :
example.com    :
example.org    :
*              discard: Not allowed destination - silently discarded

создать хешированый вариант карты

# postmap hash:/etc/postfix/transport

добавить в /etc/postfix/main.cf

transport_maps = hash:/etc/postfix/transport

и перечитать конфигурацию postfix

# service postfix reload

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

Dec 27 16:13:02 server postfix/discard[2717]: 55B574E300: to=, relay=none, delay=0.06, delays=0.05/0/0/0, dsn=2.0.0, status=sent (Not allowed destination - message silently discarded)

вторник, 15 июня 2010 г.

Редактирование SMTP заголовков в postfix

Встала задача удалять часть smtp заголовков из письма, навскидку ничего не предумалось, так что нужный ответ нашел тут. Вкратце:

в /etc/postfix/main.cf пишется
header_checks = regexp:/etc/postfix/header_checks

в /etc/postfix/header_checks пишется
/^Received:.*\[192\.168\.0\.[0-9]/      IGNORE

делается postmap /etc/postfix/header_checks и затем postfix reload