Возникла необходимость отправки почты с домашнего ПК или с сервера за NAТ для системных оповещений или других нужд? Значит эта статья для вас!

Это не полноценный почтовый сервер, всего лишь способ доставки писем через сервер-посредник

Установка необходимых пакетов

sudo apt-get install postfix mutt

Создание конфига

Заменяем содержимое /etc/postfix/main.cf

relayhost =
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/private/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/private/sender_relay
sender_canonical_maps = hash:/etc/postfix/private/canonical

Создаем папку /etc/postfix/private

sudo mkdir /etc/postfix/private

Создаем файлы для Postfix lookup tables

/etc/postfix/private/canonical

@yandex.ru	user@yandex.ru

/etc/postfix/private/sender_relay

@yandex.ru	smtp.yandex.ru

/etc/postfix/private/sasl_passwd

[smtp.yandex.ru]	user@yandex.ru:********

Создаем Postfix lookup tables

sudo postmap /etc/postfix/private/*

Перезапускаем сервис

sudo service postfix restart

Отправляем почту

Все, можно проверять работу с помощью, например, mutt Отправим тестовое сообщение на наш e-mail

echo "test" | mutt -s "test" nash@e-mail.ru

Чтобы добавить вложение используйте ключ -a

echo "test" | mutt -s "test" nash@e-mail.ru -a file

Возможные проблемы

Если что-то не получается, смотрим логи /var/log/mail.log

Заблокирован порт 25 на стороне провайдера

Столкнулся с такой проблемой:

Nov  3 11:21:22 spektr-pbx postfix/smtp[6821]: connect to mx.yandex.ru[213.180.204.89]:25: No route to host
Nov  3 11:21:23 spektr-pbx postfix/smtp[6822]: connect to mx.yandex.ru[213.180.204.89]:25: No route to host
Nov  3 11:21:24 spektr-pbx postfix/smtp[6822]: connect to mx.yandex.ru[87.250.250.89]:25: No route to host
Nov  3 11:21:24 spektr-pbx postfix/smtp[6822]: connect to mx.yandex.ru[2a02:6b8::89]:25: Network is unreachable
Nov  3 11:21:25 spektr-pbx postfix/smtp[6821]: connect to mx.yandex.ru[77.88.21.89]:25: No route to host
Nov  3 11:21:25 spektr-pbx postfix/smtp[6821]: connect to mx.yandex.ru[2a02:6b8::89]:25: Network is unreachable
Nov  3 11:21:26 spektr-pbx postfix/smtp[6821]: connect to mx.yandex.ru[213.180.193.89]:25: No route to host
Nov  3 11:21:27 spektr-pbx postfix/smtp[6822]: connect to mx.yandex.ru[213.180.193.89]:25: No route to host
Nov  3 11:21:28 spektr-pbx postfix/smtp[6822]: connect to mx.yandex.ru[93.158.134.89]:25: No route to host

Хотя ping до ресурсов проходит, т.е. заблокирован только 25 порт, причем часто его блокирует провайдер, дабы от клиентов спам не валил в Интернет. Убедиться, что порт заблокирован можно следующим образом

telnet mx.yandex.ru 25

Если видите следующее, значит порт заблокирован

Trying 213.180.193.89...
Trying 213.180.204.89...
Trying 77.88.21.89...
Trying 93.158.134.89...
Trying 87.250.250.89...
Trying 2a02:6b8::89...
telnet: Unable to connect to remote host: Network is unreachable

В ином случае подключение пройдет. Чтобы отключиться нужно нажать Ctrl+] и дать команду quit.