Как отправить почту без почтового сервера.
Многим web-мастерам необходимо уметь настраивать почтовую службу на своем хосте. Обычно, в качестве почтовой службы используется сервер sendmail. Однако, зачастую, из всех возможностей sendmail используется только отправка почты. Если ресурсы на сервере ограничены, и не хочется выделять память для того чтобы процесс sendmail постоянно висел в системе, то в систему можно установить программу ssmtp. Программа ssmtp отправляет почту точно так же как sendmail, но при этом не висит постоянно в памяти, а автоматически запускается каждый раз, когда какой-нибудь программе необходимо отправить письмо.
В этой статье рассказывается, как настроить программу ssmtp для работы через сервера Google.
Как это работает
Исторически сложилось так, что в *NIX-мире для передачи почты первым был написан сервер sendmail. Этот сервер долгое время был стандартом де-факто. Сервер sendmail представляет из себя комбаин, который выполняет множество функций и использует для приема и передачи почты протокол SMTP.
Постепенно была сформирована концепция MTA - то есть, концепция Mail Transfer Agent. MTA - это элемент системы передачи почты, который занимается только процессом передачи почтовых сообщений. Программы, используемые для передачи почтовых сообщений, являются MTA-программами.
Помимо sendmail, в *NIX системах появились и другие MTA-программы. Например, postfix, EXIM и, что для нас важно, ssmtp. Однако исторически в системе Linux принято, что программа для передачи почтовых сообщений должна быть именно sendmail. Поэтому, когда устанавливается любая из MTA-программ, она создает файлы линков /usr/sbin/sendmail и /usr/lib/sendmail, которые указывают на нужную программу. В нашем случае, эти файлы будут указывать на программу ssmtp.
Обратите внимание: Для отправки писем не требуется чтобы постоянно был включен обслуживающий демон (он необходим только для приема писем). Поэтому ssmtp - это просто программа.
В Linux при отправке писем любой клиент (например, интерпретатор PHP) по-умолчанию выполняет программу /usr/sbin/sendmail, передавая через стандартный поток ввода заголовки и текст письма. В нашем случае это линк, и он указывет на программу ssmtp. Поэтому отправка почты будет совершаться через ssmtp.
Как настроить
Итак, нужно иметь почтовый ящик на GMail. Все письма, рассылаемые через ssmtp будут приходить адресату так, как будто они были отправлены с ящика Google. Предположим, что у нас есть ящик myemail@gmail.com. Будем проводить настройки с использованием этого почтового ящика.
Устанавливаем программу ssmtp. В Debian для этой цели можно использовать команду:
После устновки нужно настроить файл /etc/ssmtp/ssmtp.conf. Вот как он должен выглядеть, чтобы ssmtp работал через GMail:
root=myemail@gmail.com mailhub=smtp.gmail.com:465 AuthUser=myemail AuthPass=пароль_к_почтовому_ящику rewriteDomain=gmail.com hostname=gmail.com FromLineOverride=YES UseTLS=YES
Далее нужно настроить файл /etc/ssmtp/revaliases. В нем следует прописать тех пользователей, от которых возможна отправка почты. Обычно прописывается пользователь root и пользователь www-data чтобы веб-сервер имел возможность отправлять почту. Содержимое этого файла должно быть следующим:
root:myemail@gmail.com:smtp.gmail.com:465 root:myemail@gmail.com:smtp.gmail.com:465 www-data:myemail@gmail.com:smtp.gmail.com:465
На этом настройку можно считать законченой.
Если пользоваться программой mail то надо поставить mailutils
Теперь проверим
[<-] 220 mx.google.com ESMTP x54sm9783319eeh.17 [->] EHLO smtp.gmail.com [<-] 250 ENHANCEDSTATUSCODES [->] STARTTLS [<-] 220 2.0.0 Ready to start TLS [->] EHLO smtp.gmail.com [<-] 250 ENHANCEDSTATUSCODES [->] AUTH LOGIN [<-] 334 VXNlcm5hbWU6 [->] bGludXhqb3VybmFsLnN1QGdtYWlsLmNvbQ== [<-] 334 UGFzc3dvcmQ6 [<-] 235 2.7.0 Accepted [->] MAIL FROM: [<-] 250 2.1.0 OK x54sm9783319eeh.17 [->] RCPT TO:<проверочный@адрес> [<-] 250 2.1.5 OK x54sm9783319eeh.17 [->] DATA [<-] 354 Go ahead x54sm9783319eeh.17 [->] Received: by smtp.gmail.com (sSMTP sendmail emulation); Tue, 28 Dec 2010 20:35:30 +0200 [->] From: “root” [->] Date: Tue, 28 Dec 2010 20:35:30 +0200 [->] To: проверочный@адрес [->] Subject: Наш заголовак письма [->] User-Agent: Heirloom mailx 12.4pre 6/29/08 [->] MIME-Version: 1.0 [->] Content-Type: text/plain; charset=us-ascii [->] Content-Transfer-Encoding: 7bit [->] [->] Наше тест-сообщения [->] . [<-] 250 2.0.0 OK 1293549764 x54sm9783319eeh.17 [->] QUIT [<-] 221 2.0.0 closing connection x54sm9783319eeh.17
Источники: