Настройка sendmail для отправки почты через Gmail

На днях понадобилось настроить отправку писем при помощи PHP, раньше необходимости в этом не было, так что и настроено не было тоже. Как известно, PHP-функция mail() сама не отправляет почту, а лишь передаёт составленное письмо программе MTA (агенту передачи почты), и так как собственного SMTP-сервера у меня нет, для отправки писем я пользуюсь Gmail. В качестве MTA решил использовать стандартный sendmail. О том, как всё это настроить и связать вместе — далее. Для начала убедитесь, что у вас установлен именно sendmail (а не exim4 или другой MTA), сделать это можно так:
 ls -la `which sendmail` lrwxrwxrwx 1 root root 26 2011-01-17 19:58 /usr/sbin/sendmail -> /etc/alternatives/sendmail 
Потому что в свежих убунтах вроде как устанавливается именно exim4. По крайней мере у меня оказался он.

Настройка sendmail

Правка /etc/mail/sendmail.mc добавьте следующие строки в конец файла, но ДО группы опций MAILER*:
 define(`SMART_HOST',`smtp.gmail.com:465') define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl 
обратите внимание на разные кавычки вокруг значений — это не ошибка! создайте файл /etc/mail/auth/client-info:
 AuthInfo:smtp.gmail.com "U:nobody" "I:USERNAME@gmail.com" "P:PASSWORD" 
Права и применение конфигов:
 chmod 600 /etc/mail/auth/* sendmailconfig 

Настройка PHP

Посмотрите вывод phpinfo(), должна быть директива sendmail_path = /usr/sbin/sendmail -t -i если это не так, исправьте в php.ini в секции [mail function], и не забудьте перезапустить Apache.

Проверка

Используйте примерно такой код:
  
Если письмо не отправилось, смотрите лог sendmail в /var/log/mail.log

P.S. Это перевод вот этого поста с дополнениями. Также существует более свежая его версия здесь. Там добавлена конфигурация SSL-сертификатов для Gmail. Я этого делать не стал, потому что всё работает и так. P.P.S. На самом деле работает не совсем всё, что должно: не получается писать произвольный email в заголовке письма From: Но, скорее всего, это проблема конкретно моего сервера, если я это решу, текст будет дополнен.

Комментарии

Популярные сообщения из этого блога

Как восстановить подключение к сетевым дискам в Windows

Идеальная регистрация на сайте

Как отключить MTP в Android