Настройка почты ssmtp для PHP mail()
Пришлось на днях настраивать почту на тестовом веб-сервере. Нужно это для того, чтобы наше серверное приложение могло отправлять пользователям уведомления на почту. Выделенный настроенный почтовый сервер имеется, поэтому нужно было всего-навсего настроить какой-нибудь MTA на пересылку почты. Так как с админством уже завязал (да и ранее почту под линукс настраивать не приходилось), то пришлось найти несколько готовых варинатов из которых слепил свой. Собственно здесь закладка для себя (вдруг когда-нибудь пригодится).
Сервер на котором выполнялась настройка: Ubuntu 12.04 LTS.
smtp.remotemailserver.com - удаленный почтовый сервер.
dev.server.com - доменное имя веб-сервера.
По рекомендациям в интеренете решил установить там простенький МТА - ssmtp:
$ sudo apt-get install ssmtp
Затем нужно отредактировать конфигурационные файлы ssmtp:
sudo nano /etc/ssmtp/ssmtp.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # Config file for sSMTP sendmail # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. root=ubuntu # The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com mailhub=smtp.remotemailserver.com # Where will the mail seem to come from? rewriteDomain=server.com # The full hostname hostname=dev.server.com # Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address FromLineOverride=YES AuthUser=YOUR_MAIL_USER AuthPass=PASS UseSTARTTLS=YES |
$ sudo nano /etc/ssmtp/revaliases
1 2 3 4 5 6 7 8 | # sSMTP aliases # # Format: local_account:outgoing_address:mailhub # # Example: root:your_login@your.domain:mailhub.your.domain[:port] # where [:port] is an optional port number that defaults to 25. www-data:support@server.com:smtp.remotemailserver.com ubuntu:support@server.com:smtp.remotemailserver.com |
Правим php.ini
$ sudo nano /etc/php5/apache2/php.ini
Ищем параметр sendmail_path и прописываем в нем путь к ssmtp:
1 | sendmail_path = /usr/sbin/ssmtp -t |
либо /usr/sbin/sendmail -t
Так как sendmail это ссылка на ssmtp:
lrwxrwxrwx 1 root root 5 Jan 1 2012 /usr/sbin/sendmail -> ssmtp
Не разбирался зачем ключ -t (в мане написано, что он игнорируется ssmtp).
Делаем рестарт апача:
$ sudo service apache2 restart
Код проверки (PHP)
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $to = 'myaddress@gmail.com'; $subject = 'Test Email'; $message = 'Hello Igor'; $headers = 'From: Support Team <support@server.com>' . "\r\n" . 'Reply-To: support@server.com' . "\r\n" . 'MIME-Version: 1.0' . "\r\n" . 'Content-Type: text/html; charset=utf-8' . "\r\n" . 'Content-Transfer-Encoding: quoted-printable'; mail($to, $subject, $message, $headers); ?> |
То есть создаем файл с расширением PHP, например, testmail.php запускаем его из командной строки:
$ php testmail.php
Письмо пришло.
Но из нашего веб приложения письма уходить отказались. :( Смотрел логи, апача, почты, но все свелось к тому, что пришлось все удалить и настроить postfix. С ним все заработало как нужно. По настройке Postfix также нужно будет сделать себе закладочку на всякий случай…
Дмитрий:
Многие сейчас настраивают отправку писем на gmail и не могут найти настройки для файлов php.ini и sendmail.ini
Поделюсь своими настройками, надеюсь помогу таким же “чайникам”, коим сам и являюсь :)
В файле php.ini раскомментированы строки:
sendmail_path = C:\xampp\sendmail\sendmail.exe
mail.add_x_header=On
(остальные с префиксом ; перед строкой)
В файле sendmail.ini:
smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=auto
error_logfile=error.log
debug_logfile=debug.log
auth_username=your_mail@gmail.com
auth_password=your_password
pop3_server=
pop3_username=
pop3_password=
force_sender=your_mail@gmail.com
force_recipient=
hostname=gmail.com
По состоянию на 14.03.2017 - всё работает
ОС Windows 7
Модуль Apache
Ответить
14 марта 2017, 22:41