Отправка почты через внешний почтовый сервер
- Подробности
- Просмотров: 11940
Итак. Как известно любой уважающий себя он-лайн сервис поддерживает такую штуку как отправка электронной почты пользователям. Назначение может быть разнообразно. Это и активация аккаунта, и восстановление пароля, и рассылка новостей. Чтобы почта отправлялась очевидно, что на сервере нужно заиметь почтовик, тоесть почтовый сервер. И организируя его нужно позаботиться, чтобы взаимодействие было двусторонним, тоесть чтобы почту можно было принимать, а не только отправлять. Это нужно для того, чтобы другие почтовые сервисы не относились к нашей почте как к спаму (хотя даже и это не всегда помогает). Есстественно, что у сервера должен быть внешний IP и соответсвенная MX-запись в описании доменной зоны. Но это возможно не всегда, особенно в больших конторах со скудными финансами. Зачастую контора имеет один внеший IP, а все остальные присоедены к Интернету через NAT и реверсивное проксирование. Вот если нам внезапно понадобилось отправлять почту с сервера в локальной сети и при этом у нас уже есть почтовик, настроенный для работы с Интернетом, то мы можем это использовать для себя. Тоесть используем имеющийся постовик как relay...
Здесь мы рассмотрим как это делается с postfix на сервере с Gentoo. Для других дистров это тоже легко применить, главное суть понять.
Шаг 1.
Нужно заиметь учётку на работающем почтовике, чтобы мы могли юзать его как relay. Делается не сложно, просто обращаемся к админу того сервера с соответсвующей просьбой. Ну реализацию этого шага я думаю по деталям разъяснять не стоит.
Шаг 2.
Открываем /etc/postfix/main.cf и ищем там настройку relayhost. Она отвечает за пересылку почты через релай. Указываем адрес, по которому нам доступен почтовик в локалке.
relayhost = [mail.local]
Тут mail.local - это и есть этот адрес.
Шаг 3.
Авторизация на релай-сервере. Отрываем тот же /etc/postfix/main.cf и дописываем такие строки:
defer_transport = smtp
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
Это мы активировали функию авторизации через SASL. Учтите, если авторизация какая-то хитро-мудрая, то этот способ может не подойти, на этот счёт лучше поговорить с вашим админом.
Далее в файо /etc/postfix/saslpass, который мы указали раннее прописываем логин а пароль от сервера.
mail.local Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.:password
На всякий случай комментирую: первое - это адрес сервера, второе - логин, третье (после двоеточия) - это пароль. После этого создаём хешированную таблицу (которую postfix и будет читать).
# postmap /etc/postfix/saslpass
Остаётся перегрузить настройки postfix.
# /etc/init.d/postfix reload
Вот собственно и всё. Можно работать. Главное корректно задавать адрес отправителя в заголовках, ибо может не прокатить.