Поговори со мной, Sendmail
Даже линуксоиды с опытом побаиваются великого и ужасного почтового демона Sendmail (которому, как сообщил на посиделках в ТК камрад Durman, исполнилось недавно 25 лет). Самое страшное в нем, конечно же, конфигурационные файлы. Но, как сказано в одной очень удачной статье на эту тему, «А кто же тебя просит в них лезть?!». Попробую показать, что Sendmail — вещь вполне адекватная и на свалку истории эту программу списывать рано.
Если уж говорить о сложностях, то они коренятся не в Sendmail'е, а во всё более усложняющихся правилах пересылки почты. Оно и понятно: спамеры, хакеры и вирусописатели работают по-стахановски, пользуются любой лазейкой. Поэтому передовые почтовые сервисы (а Sendmail остается одним из лидеров) вынуждены крепить оборону. Между тем сам протокол, по которому идет обмен электронными письмами, довольно прост. Не случайно он называется Simple Mail Transfer Protocol (SMTP). Ниже мы убедимся в этой простоте, но прежде несколько слов о самой программе.
Sendmail состоит из одного единственного бинарника и нескольких обвязывающих его «оберток». Запуская программу с разными ключами можно превратить ее и в сервер, передающий почту во внешнюю сеть, и в обработчик очереди писем. Обо всем этом сказано в вышеупомянутой статье. Единственный важный момент, о котором в ней не упомянуто — для работы Sendmail нужен еще пакет procmail, сортирующий почту, уже попавшую на локальную машину. Но это единственная зависимость Sendmail. В других каких-либо специфических пакетах и библиотеках он не нуждается, а посему легко собирается и из исходников.
По окончании установки на нашем пути встают пресловутые конфиги. Самый главный и страшный из них — /etc/mail/sendmail.cf — представляет собой дикую мешанину из всевозможных закорючек. Когда-то, говорят, на Земле жили люди, которые могли править такие файлы вручную, но что-то мне подсказывает, что они вымерли. Тем не менее, к Sendmail прилагается целый набор готовых конфигов на все случаи жизни (см. /usr/share/sendmail/cf). Кроме того, там же находятся файлы с расширением mc, которые понять несколько легче. Но мы вообще не будем заморачиваться с конфигурированием Sendmail, а просто задействуем простейший вариант
Сразу хочу предупредить, что почту такой конфиг будет таскать только в локальной сети. Но задача данной статьи — дедемонизировать Sendmail, а не создать полноценную SMTP-службу. Тем не менее, почта в локальной сети — тоже великая вещь. На ее основе можно создать простую, но надежную систему электронного документооборота и, воодушевившись успехом, перейти к освоению более сложных секретов Sendmail.
Итак, демон запущен, давайте убедимся в его добрых намерениях. Для этого в нашем распоряжении два компьютера — 3f-gate (на нем работает Sendmail) и 3f-desk (с него будем слать почту). Во избежание дрызготни с DNS пропишем на этих машинах соответствующие имена в файлах /etc/hosts:
В приветливости Sendmail убеждаемся простым телнетом, «натравленным» на 25-й порт:

Итак, говорите, Вас слушают! Не знаете что говорить? Так скажите HELP!

Ага, в мире серверов, оказывается, принято здороваться. Правда, не очень грамотно: HELO вместо HELLO. Важно еще и назвать собеседника по имени, без этого он говорить дальше откажется.

Ну вот, нас рады видеть. А чо мы приперлись-то? А почту отправить!

Как видим, сервер проверяет адрес отправителя, так что на компьютере с Sendmail'ом должен работать какой-то механизм, позволяющий убедиться, что хост адресата реально существует в природе. Это может быть DNS или, как в нашем случае, файл /etc/hosts.
Проверяется и адрес получателя.

Ну, формальности соблюдены, пишем письмо, заканчиваем его точкой, помещенной на отдельной строке.

Вежливо прощаемся:

Проверим, дошло ли письмо командой

В добрых намерениях и простоте Sendmail мы убедились, теперь можно отправить письмо уже не telnet'ом, а с помощью любого почтового клиента типа Outlook Express или Thunderbird. Не забудьте только снять галочку проверки подлинности пользователя при общении с SMTP-сервером.

Такую проверку имеет смысл осуществлять при пересылке почты во внешнюю сеть и при большом количестве машин. В локальной же сети, где пара десятков компьютеров, злоумышленников и так можно без труда вычислить.
Если уж говорить о сложностях, то они коренятся не в Sendmail'е, а во всё более усложняющихся правилах пересылки почты. Оно и понятно: спамеры, хакеры и вирусописатели работают по-стахановски, пользуются любой лазейкой. Поэтому передовые почтовые сервисы (а Sendmail остается одним из лидеров) вынуждены крепить оборону. Между тем сам протокол, по которому идет обмен электронными письмами, довольно прост. Не случайно он называется Simple Mail Transfer Protocol (SMTP). Ниже мы убедимся в этой простоте, но прежде несколько слов о самой программе.
Sendmail состоит из одного единственного бинарника и нескольких обвязывающих его «оберток». Запуская программу с разными ключами можно превратить ее и в сервер, передающий почту во внешнюю сеть, и в обработчик очереди писем. Обо всем этом сказано в вышеупомянутой статье. Единственный важный момент, о котором в ней не упомянуто — для работы Sendmail нужен еще пакет procmail, сортирующий почту, уже попавшую на локальную машину. Но это единственная зависимость Sendmail. В других каких-либо специфических пакетах и библиотеках он не нуждается, а посему легко собирается и из исходников.
По окончании установки на нашем пути встают пресловутые конфиги. Самый главный и страшный из них — /etc/mail/sendmail.cf — представляет собой дикую мешанину из всевозможных закорючек. Когда-то, говорят, на Земле жили люди, которые могли править такие файлы вручную, но что-то мне подсказывает, что они вымерли. Тем не менее, к Sendmail прилагается целый набор готовых конфигов на все случаи жизни (см. /usr/share/sendmail/cf). Кроме того, там же находятся файлы с расширением mc, которые понять несколько легче. Но мы вообще не будем заморачиваться с конфигурированием Sendmail, а просто задействуем простейший вариант
sudo cp /usr/share/sendmail/cf/cf/generic-linux.cf /etc/mail/sendmail.cf
sudo /etc/rc.d/rc.sendmail restartСразу хочу предупредить, что почту такой конфиг будет таскать только в локальной сети. Но задача данной статьи — дедемонизировать Sendmail, а не создать полноценную SMTP-службу. Тем не менее, почта в локальной сети — тоже великая вещь. На ее основе можно создать простую, но надежную систему электронного документооборота и, воодушевившись успехом, перейти к освоению более сложных секретов Sendmail.
Итак, демон запущен, давайте убедимся в его добрых намерениях. Для этого в нашем распоряжении два компьютера — 3f-gate (на нем работает Sendmail) и 3f-desk (с него будем слать почту). Во избежание дрызготни с DNS пропишем на этих машинах соответствующие имена в файлах /etc/hosts:
192.168.2.2 3f-desk.3f-lab 3f-desk
192.168.2.1 3f-gate.3f-lab 3f-gateВ приветливости Sendmail убеждаемся простым телнетом, «натравленным» на 25-й порт:

Итак, говорите, Вас слушают! Не знаете что говорить? Так скажите HELP!

Ага, в мире серверов, оказывается, принято здороваться. Правда, не очень грамотно: HELO вместо HELLO. Важно еще и назвать собеседника по имени, без этого он говорить дальше откажется.

Ну вот, нас рады видеть. А чо мы приперлись-то? А почту отправить!

Как видим, сервер проверяет адрес отправителя, так что на компьютере с Sendmail'ом должен работать какой-то механизм, позволяющий убедиться, что хост адресата реально существует в природе. Это может быть DNS или, как в нашем случае, файл /etc/hosts.
Проверяется и адрес получателя.

Ну, формальности соблюдены, пишем письмо, заканчиваем его точкой, помещенной на отдельной строке.

Вежливо прощаемся:

Проверим, дошло ли письмо командой
ssh [email protected] sudo cat /var/mail/mabel
В добрых намерениях и простоте Sendmail мы убедились, теперь можно отправить письмо уже не telnet'ом, а с помощью любого почтового клиента типа Outlook Express или Thunderbird. Не забудьте только снять галочку проверки подлинности пользователя при общении с SMTP-сервером.

Такую проверку имеет смысл осуществлять при пересылке почты во внешнюю сеть и при большом количестве машин. В локальной же сети, где пара десятков компьютеров, злоумышленников и так можно без труда вычислить.

Комментарии (3)
RSS свернуть / развернутьFREExLOADER
По-идее тум и настраивать не так много (например, почта для web сервера), просто потом начинаются самое интересное — нужно контролировать очередь сообщений, многие сервера так просто от кого попало не принимают по smtp почту
Может кстати кому-то помочь (для тех кто будет использовать exim):
Debian: настройка exim на отправку почты через SMTP Google
Консольный монитор очереди Exim
Sergei_T
Markony
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.