Для того, чтобы почта с ваших linux серверов гарантировано доставлялась до адресатов, необходимо использовать доверенные смартхосты (relay). Если у вас есть аакаунт Google, почтовые сервера Google это то, что нам нужно. Давайте настроим sendmail для отправки почты через gmail…
Подготовка и установка
Установка Sendmail:
1 |
yum -y install sendmail mailutils mailx sendmail-bin sendmail-cf cyrus-sasl-plain |
Создаём папку для файла аутентификации, содержащего имя пользователя и пароль gmail аккаунта:
1 2 |
mkdir -m 700 /etc/mail/authinfo/ cd /etc/mail/authinfo/ |
Далее создаем файл аутентификации. В данном случае имя файла gmail-idpass:
Создаём файл:
1 |
nano gmail-idpass |
и добавляем:
1 |
AuthInfo: "U:root" "I:YOURGMAILID@GMAIL.COM" "P:YOURGMAILPASS" |
[Примечание: подставьте ваш gmail id и пароль в соответствующие поля]
Сохраняем и закрываем файл.
Теперь необходимо создать хеш-карту для этого файла:
1 |
makemap hash gmail-idpass < gmail-idpass |
Настройка Sendmail
Добавляем необходимые директивы в /etc/mail/sendmail.mc. Их необходимо добавить в конец файла но перед директивой “MAILER”:
Нужное место выглядит приблизительно так:
1 2 3 4 5 6 7 8 |
dnl MASQUERADE_DOMAIN(localhost)dnl dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl dnl MASQUERADE_DOMAIN(mydomain.lan)dnl MAILER(smtp)dnl MAILER(procmail)dnl dnl MAILER(cyrusv2)dnl |
Вставляем директивы перед директивой MAILER(smtp)dnl
1 |
nano /etc/mail/sendmail.mc |
и вставляем
1 2 3 4 5 6 7 8 9 |
# Adding config for gmail # 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/gmail-idpass.db')dnl # End config for gmail # |
Сохраняем файл и выходим из редактора.
Теперь файл sendmail.mc выглядит так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
dnl MASQUERADE_DOMAIN(localhost)dnl dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl dnl MASQUERADE_DOMAIN(mydomain.lan)dnl # Adding config for gmail # 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/gmail-idpass.db')dnl # End config for gmail # MAILER(smtp)dnl MAILER(procmail)dnl dnl MAILER(cyrusv2)dnl |
Теперь необходимо пересоздать конфигурацию sendmail:
1 |
make -C /etc/mail |
Перезапускаем сервис sendmail:
1 |
/etc/init.d/sendmail reload |
Самое время проверить конфигурацию в работе!
Отсылаем почту из командной строки через sendmail
Теперь мы можем послать письмо из командной строки с помощью команды:
1 |
echo "Mail Body - Test Message from CENTOS Shell" | mail -s "Subject is test Mail Sending from CLI" -r yourgmailid to-address@example.com |
Эта команда вышлет письмо на to-address@example.com
Мы можем отслеживать процесс в логе:
1 |
tail -f /var/log/maillog |
вы должны увидеть что-то похожее на:
1 2 3 4 5 6 7 8 9 10 |
Feb 3 14:34:36 ip-10-20-2-202 sendmail[3442]: u13EYare003442: from=asterisk, size=38130, class=0, nrcpts=1, msgid=<Asterisk-1-899475438-900-1823@ip-10-35-2- Feb 3 14:34:36 ip-10-20-2-202 postfix/smtpd[3443]: connect from localhost[127.0.0.1] Feb 3 14:34:36 ip-10-20-2-202 postfix/smtpd[3443]: A4BDD6CC78: client=localhost[127.0.0.1] Feb 3 14:34:36 ip-10-20-2-202 postfix/cleanup[3446]: A4BDD6CC78: message-id=<Asterisk-1-899475438-900-1823@ip-10-20-2-202> Feb 3 14:34:36 ip-10-20-2-202 postfix/qmgr[1333]: A4BDD6CC78: from=<asterisk@ip-10-35-2-202.eu-west-1.compute.internal>, size=39079, nrcpt=1 (queue active) Feb 3 14:34:36 ip-10-20-2-202 sendmail[3442]: u13EYare003442: to="itgala.xyz" <to-address@example.com>, ctladdr=asterisk (501/502), delay=00:00:00, xdelay=00:0=Sent (Ok: queued as A4BDD6CC78) Feb 3 14:34:36 ip-10-20-2-202 postfix/smtpd[3443]: disconnect from localhost[127.0.0.1] Feb 3 14:34:36 ip-10-20-2-202 postfix/smtp[3447]: connect to aspmx.l.google.com[2a00:1450:400b:c02::1b]:25: Network is unreachable Feb 3 14:34:37 ip-10-20-2-202 postfix/smtp[3447]: A4BDD6CC78: to=<to-address@example.com>, relay=aspmx.l.google.com[74.125.24.27]:25, delay=0.41, delays013750wmf.42 - gsmtp) Feb 3 14:34:37 ip-10-20-2-202 postfix/qmgr[1333]: A4BDD6CC78: removed |