Как отправить почту без почтового сервера.

Многим 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.

$ cd /usr/sbin
$ ls -l | grep sendmail
lrwxrwxrwx 1 root root 5 2011-04-07 03:09 sendmail -> ssmtp

Программа ssmtp на самом деле представляет из себя просто консольный SMTP-клиент, который в stdin принимает отправляемое письмо и умеет соединяться с внешним SMTP-сервером и отправлять ему почтовые сообщения. В этом смысле, ssmtp мало чем отличается от других почтовых клиентов, таких как KMail или Thunderbird.

Обратите внимание:

Для отправки писем не требуется чтобы постоянно был включен обслуживающий демон (он необходим только для приема писем). Поэтому ssmtp — это просто программа.

В Linux при отправке писем любой клиент (например, интерпретатор PHP) по-умолчанию выполняет программу /usr/sbin/sendmail, передавая через стандартный поток ввода заголовки и текст письма. В нашем случае это линк, и он указывет на программу ssmtp. Поэтому отправка почты будет совершаться через ssmtp.

Итак, нужно иметь почтовый ящик на GMail. Все письма, рассылаемые через ssmtp будут приходить адресату так, как будто они были отправлены с ящика Google. Предположим, что у нас есть ящик myemail@gmail.com. Будем проводить настройки с использованием этого почтового ящика.

Устанавливаем программу ssmtp. В Debian для этой цели можно использовать команду:

$ sudo apt-get install ssmtp mailx

После устновки нужно настроить файл /etc/ssmtp/ssmtp.conf. Вот как он должен выглядеть, чтобы ssmtp работал через GMail:

root=username@gmail.com
mailhub=smtp.gmail.com:587

AuthUser=username@gmail.com
AuthPass=VerySecurePasswd
AuthMethod=LOGIN

RewriteDomain=kruglikov.info

Hostname=localhost.localdomain

FromLineOverride=YES

UseTLS=YES
UseSTARTTLS=YES

TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt

Далее нужно настроить файл /etc/ssmtp/revaliases. В нем следует прописать тех пользователей, от которых возможна отправка почты. Обычно прописывается пользователь root и пользователь www-data чтобы веб-сервер имел возможность отправлять почту. Содержимое этого файла должно быть следующим:

root:myemail@gmail.com:smtp.gmail.com:587
www-data:myemail@gmail.com:smtp.gmail.com:587

На этом настройку можно считать законченой. Для проверки следует попробовать отправить почтовое сообщение через PHP. Создаем скрипт send_test_email.php следующего содержания:

< ?php mail("anyemail@mail.ru", "Заработало!", "Это проверка \n ssmtp"); ?>

Выполняем его в браузере или в консоли сервера, и на ящик anyemail@mail.ru должно прийти письмо с ящика myemail@gmail.com. Если вы всё сделаете правильно, должно заработать с первого раза.

1 комментарий

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

ipv6 ready