Отправка почты через внешний почтовый сервер

Итак. Как известно любой уважающий себя он-лайн сервис поддерживает такую штуку как отправка электронной почты пользователям. Назначение может быть разнообразно. Это и активация аккаунта, и восстановление пароля, и рассылка новостей. Чтобы почта отправлялась очевидно, что на сервере нужно заиметь почтовик, тоесть почтовый сервер. И организируя его нужно позаботиться, чтобы взаимодействие было двусторонним, тоесть чтобы почту можно было принимать, а не только отправлять. Это нужно для того, чтобы другие почтовые сервисы не относились к нашей почте как к спаму (хотя даже и это не всегда помогает). Есстественно, что у сервера должен быть внешний 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

Вот собственно и всё. Можно работать. Главное корректно задавать адрес отправителя в заголовках, ибо может не прокатить.