ITblog.by » Статьи » Настройка sendmail relay через аккаунт на google

Настройка sendmail relay через аккаунт на google


Часто бывают ситуации, когда не удается напрямую отправить письмо с сервера. В моем случаем была проблема с указанием обратной записи для ip адреса моего сервера - что-то мой провайдер не поделил с "арендодателем" диапазона адресов.

 

В общем, было решено сделать отправку писем через аккаунт на другом mail сервере. В данном случае это был gmail.com и привязанный к нему домен itblog.by. Из плюсов: бесплатный (или почти) почтовый ящик, привязка своего домена, нет проблем с прохождением спамфильтров. Из минусов - один общий mail-from адрес. Но для моей ситуации это не критично.

 

Итак, начнем. Базовая система - ubuntu 12.04. Устанавливаем sendmail, если не установлен:

apt-get install sendmail mailutils

Создаем необходимые каталоги, негерируем ssl сертификаты:mkdir /etc/mail/certs

chmod 700 /etc/mail/certs 
cd
/etc/mail/certs
openssl dsaparam 1024 -out dsa1024 -out dsa1024.pem openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out /etc/mail/certs/mycert.pem -keyout /etc/mail/certs/mykey.pem openssl req -x509 -new -days 3650 -key /etc/mail/certs/mykey.pem -out /etc/mail/certs/mycert.pem ln -s /etc/mail/certs/mycert.pem /etc/mail/certs/CAcert.pem chmod 600 /etc/mail/certs/*

Создем файл с данными для аутентификации:

# nano /etc/mail/authinfo 
AuthInfo:smtp.gmail.com "U:root" "I:USERNAME@gmail.com" "P:PASSWORD"
AuthInfo: "U:root" "I:USERNAME@gmail.com" "P:PASSWORD"

Генерируем хэш:

makemap hash -o /etc/mail/authinfo < /etc/mail/authinfo

Указываем необходивые опции в файле конфигурации sendmail'a (добавляем в конец файла):

# nano /etc/mail/sendmail.mc 
dnl # Smrp relay
define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')
define(`confCACERT_PATH', `CERT_DIR')
define(`confCACERT', `CERT_DIR/CAcert.pem')
define(`confSERVER_CERT', `CERT_DIR/mycert.pem')
define(`confSERVER_KEY', `CERT_DIR/mykey.pem')
define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')
define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')
dnl #
dnl # gmail auth
define(`SMART_HOST',`[smtp.gmail.com]')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl
define(`confAUTH_OPTIONS', `A p')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash -o /etc/mail/authinfo.db')dnl

Собираем конфигурационный файл и перезапускаем службу:

make -C /etc/mail service sendmail restart

Если ошибок не возникло, то пробуем отправить тестовое письмо на свой ящик:

mail -s \"test subject\" testmail@testl.com
olololo
^D

Думаю не стоит напоминать, что "^D" - это комбинация Ctrl + d .
Если возникли проблемы - пишите в комментариях.

О настройке других MTA (postfix и т.п.), думаю, в будущем тоже напишу.

  • Теги: mta, ubuntu

Rating All.BY Анализ сайта ITblog.by