Настройка 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 и т.п.),думаю,в будущем тоже напишу.