Postfix за 10 минут


Колисниченко Денис, dhsilabs@mail.ru

Postfix является агентом доставки почты (Mail Transfer Agent, MTA), который используется по умолчанию во многих дистрибутивах, например, дистрибутиве ALT Linux. Мы знаем, что кроме Postfix существует другой MTA - Sendmail, который является стандартом де-факто на почтовые агенты. Если Sendmail в основном используется на крупных почтовых серверах (в основном из-за традиции, поскольку Postfix при надлежащей настройке будет выполнять большинство функций Sendmail), то Postfix в основном устанавливается на рабочих станциях для выхода в Internet.

В этой статье мы не будем рассматривать настройку Postfix для сервера, а займемся решением простой практической задачей, с которой может столкнуться любой домашний пользователь Linux. Если на предприятии настройка сервера возложена на плечи администратора, до дома "сам себе root", поэтому если сам не настроишь, никто за тебя не настроит.

Предположим, что у нас есть два локальных пользователя: ivanov и petrov. У Иванова есть два почтовых ящика - один на сервере провайдера (ivanov@isp.ru) и один на Mail.Ru (ivanov2004@mail.ru). У Петрова только один почтовый ящик - на сервере провайдера (petrov@isp.ru). Нужно настроить почтовую подсистему так, чтобы письма Иванова получал локальный пользователь ivanov, а письма Петрова - пользователь petrov. Также нужно обеспечить отправку писем, а именно, чтобы письма отправлялись, когда установлено соединение с Internet. Другими словами, Иванов и Петров могут в любое время написать письмо, но оно будет отправлено только, если установлено соединение.

Почему мы будем использовать Postfix, а не Sendmail? Во-первых, Postfix, скорее всего, уже установлен, поскольку сейчас он устанавливается в большинстве дистрибутивов по умолчанию, и нам не нужно тратить время на его установку. Во-вторых, Postfix очень прост в настройке, в чем вы сейчас убедитесь.

Начнем с настройки Postfix, который будет отвечать за доставку писем. Откройте файл /etc/postfix/mail.cf и измените параметры (если их там нет, добавьте):

defer_transport=smtp
relayhost = smtp.isp.ru

Эти две строчки говорят Postfix, что для отправки писем будет использован протокол SMTP (Simple Mail Transfer Protocol) и письма будут отправляться через почтовый сервер провайдера - smtp.isp.ru.

Теперь приступим к настройке программы fetchmail, которая будет получать письма Иванова и Петрова и раскладывать их "по полочкам". Если у вас не установлена программа fetchmail, самое время ее установить. После установки в домашнем каталоге пользователя root создайте файл .fetchmailrc:

set postmaster "postmaster"
set bouncemail
set no spambounce
poll pop.isp.ru with proto POP3
user 'ivanov' there with password 'passwd77' is ivanov here

poll pop.mail.ru with proto POP3
user 'ivanov2004' there with password 'mailru-passwd' is ivanov here

poll pop.isp.ru with proto POP3
user 'petrov' there with password 'my_pAsWd' is petrov here


Теперь осталось установить алиас для пользователя root: чтобы почту root'a читал пользователь ivanov. Для этого в файл /etc/postfix/aliases добавьте строку:

root: ivanov

Перезапустите postfix: service postfix restart

Все, настройка завершена. После установления соединения с Internet, зарегистрировавшись как ivanov, введите команду (в терминале) su -c fetchmail. Затем нужно ввести пароль пользователя root и программа fetchmail получит письма Иванова и Петрова. В это же время Postfix автоматически отправит исходящие сообщения, если таковые имеются. Вывод программы fetchmail выглядит так:

1 message for ivanov at pop.isp.ru (6050 octets).
reading message 1 of 1 (6050 octets) ...... flushed
1 message for ivanov at pop.mail.ru (2077 octets).
reading message 1 of 1 (2077 octets) .. flushed
fetchmail: No mail for petrov at pop.isp.ru

Надеюсь, мы вложились в 10 минут :-) Ваши вопросы и комментарии можете задавать по адресу dhsilabs@mail.ru.

Обновлено: 13.03.2015