Настройка почты 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 также нужно будет сделать себе закладочку на всякий случай…

Статьи и новости схожей тематики:

Один комментарий

  1. Дмитрий:

    Многие сейчас настраивают отправку писем на 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

    Ответить

Оставьте свой отзыв