Если вы только начали пользоваться Mutt, то не могли не заметить то, что он представляет из себя исключительно MUA (Mail User Agent), но никоим образом не MTA (Mail Transfer Agent). Это означает, что Mutt может выступать только в роли почтового клиента, при помощи которого пользователи получают возможность читать свою почту. Mutt не содержит программного кода, который бы позволял ему соединяться с удалёнными почтовыми серверами. Эта работа выполняется программами, называемыми MTA (Mail Transfer Agent). Хотя многие почтовые клиенты и умеют направлять почту удалённым MTA, Muttдоставляет отправляемые вами сообщения только локальному почтовому серверу, установленному в вашей системе. Раньше такая ситуация не вызвала проблем у пользователей Linux, поскольку практически любой Linux по умолчанию имел на борту работающий почтовый сервер. Однако сегодня далеко не на каждой рабочей станции под управлением Linux установлен и сконфигурирован почтовый сервер. В этой статье я расскажу вам о том, как настроить локальный почтовый сервер на базе Postfix.
Даже если вы не пользуетесь Mutt, очень неплохо иметь в распоряжении локальный почтовый сервер, который бы пересылал вашу почту. Во первых, он будет следить за очередью ваших сообщений, автоматически повторяя попытки отправки в случае возникновения ошибок (например, при временном исчезновении сетевого подключения к Интернет); при этом вам не нужно постоянно держать запущенным ваш почтовый клиент. Во вторых, если вы установите и будете использовать одновременно несколько почтовых клиентов, вам не нужно будет настраивать каждый из них, просто укажите в качестве почтового сервера localhost.
Священная война почтовых серверов
На сегодняшний день существует великое множество почтовых серверов под Linux, и каждый из них имеет свои преимущества и недостатки перед остальными. В основном предметами обсуждения выступают Sendmail, Postfix, Exim или даже прямое соединение с сервером при помощи Telnet и отправки ему SMTP-команд. На протяжении нескольких лет я перепробовал их все (да, и Telnet тоже), и как мне кажется, Postfix является «золотой серединой» в отношении стабильности, производительности, безопасности и, самое главное, простоты конфигурирования. В этой статье я расскажу о настройке Postfix в качестве локального агента доставки почты.
Первым делом, конечно же, необходимо установить Postfix. В большинстве дистрибутивовPostfix разбит на несколько пакетов: основные файлы сервера и дополнительные пакеты, содержащие части, при помощи которых вы можете интегрировать Postfix с, например,MySQL или LDAP. Поскольку в этой статье я рассматриваю лишь базовую конфигурациюPostfix, нам понадобятся только пакет, содержащий основную часть сервера. Если вы устанавливаете Postfix на Debian-подобной системе, то после установки пакета будет запущен конфигурационный скрипт, предлагающий вам услуги «мастера» по первоначальной настройке сервера. Если хотите, вы можете воспользоваться этим мастером. Выберите «Internet Site» в случае, если хотите, чтобы Postfix доставлял почту напрямую почтовым серверам получателей сообщений. Опцию «Internet with smarthost» следует выбрать в случае, когда вам по каким-то причинам необходимо передавать почту промежуточному почтовому серверу, например серверу вашего провайдера, для дальнейшей доставки. После этого вам будет предложено ответить ещё на несколько вопросов, после чего конфигурация вашего Postfix будет готова к работе.
Если в вашем дистрибутиве описанный выше конфигурационный скрипт отсутствует (или вы выбрали «No configuration» при работе с ним), то в конечном итоге вы получите конфигурационный файл /etc/postfix/main.cf, в котором большая часть строк будет закомментирована. Для настройки простого локального MTA вам будет достаточно определить лишь несколько строк в файле конфигурации. Значения параметров конфигурации Postfix являются весьма приемлемыми и безопасными, так что если вам нужно лишь доставлять почту от своего имени, достаточно будет определить лишь две строки в файле конфигурации:
mynetworks = 127.0.0.0/8 inet_interfaces = loopback-only
Да, вот такая простая конфигурация. Теперь просто перезапустите сервер командой/etc/init.d/postfix restart и ваш сервер готов! Если все остальные параметры вашего Postfix оставлены по умолчанию, то, определив только два вышеуказанных, вы сделаете так, что подключаться к вашему серверу сможете только вы, и только локально. Указанное значение параметра mynetworks заставляет Postfix принимать почту только от клиентов, подключающихся локально.
Проблема 25-го порта
До недавнего времени конфигурация, описанная выше — это всё, что вам бы было необходимо, чтобы получить работоспособный почтовый сервер. Однако сегодня, «благодаря» мерам, направленным на борьбу со спамом, всё меньше и меньше провайдеров разрешают своим клиентам совершать исходящие подключения в Интернет на 25-й порт. Даже, если такие подключения и не запрещаются некоторыми провайдерами, большинство серверов в Интернет откажутся его принимать от хостов, находящихся в локальной сети провайдера. Если оказалось, что вы находитесь как раз в такой сети, то вам,скорее всего, необходимо будет определить т. н. relay host в конфигурации вашего сервера. Relay host — это почтовый сервер, обычно предоставляемый провайдером для своих клиентов и занимающийся пересылкой почты дальше, в Интернет. Если у вас есть настроенный почтовый клиент вроде Mozilla Thunderbird, вы сможете найти в его настройках адресrealy host, определённый в разделе настроек SMTP-сервера. Чтобы настроить ваш Postfix на использование relay host, просто добавьте строку в /etc/postfix/main.cf:
relayhost = mail.somedomain.net
замените mail.somedomain.net на адрес SMTP-сервера вашего провайдера. После того, как внесёте изменения в файл конфигурации, войдите от имени root и дайте командуpostfix reload, чтобы изменения вступили в силу.
SMTP-авторизация
Конечно, не все серверы позволяют выполнять пересылку почты через них кому бы то ни было, и правильно делают. В таких случаях, обычно сервер требует, чтобы отправляющий почту пользователь был аутентифицирован прежде, чем сможет отправить сообщение. В такой ситуации вам нужно будет дополнительно сконфигурировать ваш Postfix. Для начала добавьте строки в /etc/postfix/main.cf:
smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous
Эти строки включают в Postfix SMTP-авторизацию и сообщают ему, что логины и пароли следует искать в файле /etc/postfix/sasl_passwd. После этого, создайте файл/etc/postfix/sasl_passwd. Допустим, нам необходимо,чтобы Postfix выполнял аутентификацию на сервере mail.somedomain.net от имени пользователя kyle с паролемmuttrules. В таком случае, добавьте строку в /etc/postfix/sasl_passwd:
mail.somedomain.net kyle:muttrules
Обратной стороной этого метода является то, что логин и пароль хранятся в открытом виде, что не есть хорошо. Необходимо ограничить доступ к этому файлу только пользователю rootи никому больше. Войдите в систему от имени root и выполните следующее:
chown root:root /etc/postfix/sasl_password chmod 600 /etc/postfix/sasl_passwd
На самом деле, Postfix не считывает этот файл непосредственно, а работает с хэш-базой данных, создаваемой на основе этого файла. Для того, чтобы создать базу данных, от rootвыполните:
postmap /etc/postfix/sasl_passwd
После чего вы должны обнаружить новый файл /etc/postfix/sasl_passwd.db, являющийся той самой базой данных. Имейте ввиду, что всякий раз, когда вы будете модифицировать файл /etc/postfix/sasl_passwd, необходимо повторно выполнять вызов postmap.
Теперь можно перезагрузить Postfix и ваш Mutt получит возможность отправлять почту, используя локальный транспорт. Если вы хотите по-быстрому проверить, работает ли ваша конфигурация, можете воспользоваться командой:
echo test | mail -s "test" user@remotehost
которая отправит сообщение с темой test пользователю user@remotehost.
Расположение лог-файла Postfix может быть разным от системы к системе, но в общем случае, вы должны обнаружить его в /var/log/mail.log или /var/log/maillog. Если у вас появятся какие-то проблемы с доставкой почты, эти файлы — первое, к чему следует обратиться в поисках проблемы. Вторым инструментом, которым вы можете воспользоваться, является программа mailq. Она выводит состояние очереди сообщений, с описанием статуса каждого из них. Если вся почта доставлена успешно и очередь пуста, вывод mailq будет примерно таким:
$ mailq Mail queue is empty
Это действительно просто. Конечно, «настоящее» администрирование почтового сервера требует гораздо больших знаний, но знание такого простого способа конфигурирования локального почтового сервера определённо лишним тоже не будет. Если вы, как и я, найдёте полезной такую простую конфигурацию и воспользуетесь ей, то у вас останется ещё много свободного времени, которое вы можете посвятить настройке Mutt.
По мотивам LinuxJournal.Com.