Gmail sendmail SMTP relay на ЦентОС Линуксу

Пошаљете имејл путем неке скрипте на серверу, имејл није „накачен“ ни на један SMTP сервер и онда зависите од антиспам филтера тог некога коме шаљете имејл – да ли ће бити добре воље (читај – да није лепо иконфигурисан антиспам филтер или да уоште и не постоји) па да пропусти мејл, или ће га пропустити до СПАМ фолдера или никад и неће видети светлост дана нечијег инбокса.

…то је тако јер примаоцу стиже мејл са имејл сервера који је на локалној IP адреси, невидљив споља, са неисправним подешавањима хедера – што мејл серверу аутоматски делује као нека превара. Шта мене кошта да дигнем неки мејл сервер и напишем скрипту која ће у loop-у слати имејлове на милион IP адреса у којима продајем Вијагру, Ролекс сатове или тако неки ђаво?

Кад се шаље преко SMTP-а примаоц добија регуларан мејл који као да је послат са било ког стандардног имејл клијента, нема лажи – нема преваре….и зато се у Вордпресу и сличним веб апликацијама користе SMTP додаци како би се избегао блеклистинг (то користи и блог на коме сте сад) – али шта ако не постоји могућност додатавања SMTP података кроз неки налог него сте приморани да користите локална подешавања? Ееее ту на сцену долази SMTP relay где ћете ви све локалне имејлове рутирати преко екстерног имејл сервера. Укратко уместо мејл да стигне са root@localhost.localdomain стићи ће са tvojaregularlnagmailadresa@gmail.com.

У овом примеру рутирање мејлова ћемо радити помоћу sendmail-a и ради се о Gmail налозима (може и Google Apps налози). Ово је до сад тестирано и рађено на CentOS 6 и CentOS 7 минимал машинама.

# Инсталација потребних пакета
yum install -y sendmail sendmail-cf cyrus-sasl cyrus-sasl-devel cyrus-sasl-md5 cyrus-sasl-plain cyrus-sasl-gssapi

# Бекап постојеће sendmail конфигурације
cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.bekap_`date +%Y%d%m%H%M`

# Едитовање #########################################
vi /etc/mail/sendmail.mc

# Пре прве MAILER linije dodati sledeћe (обично је трећа линија пред крај)
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_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
######################################################

# Креирање фајла где ћемо уштековати логин податке
mkdir /etc/mail/auth
echo "AuthInfo:smtp.gmail.com \"U:root\" \"I:tvojagmailadresa@gmail.com\" \"P:lozinkanagmailu\"" > /etc/mail/auth/client-info

# Дакле фајл треба да изгледа овако некако
[root@centos7 mail]# cat /etc/mail/auth/client-info
AuthInfo:smtp.gmail.com "U:root" "I:tvojagmailadresa@gmail.com" "P:lozinkanagmailu"

# Креирање hash мапе потребне за sendmail
cd /etc/mail/auth/
makemap hash client-info < client-info
chmod 700 /etc/mail/auth
chmod 600 /etc/mail/auth/*

# Рекомпајлирање мејл фолдера
tar czvf /root/etc-mail-bekap.tar.gz /etc/mail # Не једе леба бекап
cd /etc/mail
make
service postfix stop
chkconfig postfix off
chkconfig sendmail on
service sendmail restart

# Провера да ли се имејлови са сервера саљу преко исконфигурисаног налога
yum install mailx -y # Инсталација cli имејл клијента ако га већ нема
echo "Ovo je test imejl" | mail -s "Test imejl poslat u $(date "+%H:%M %d.%m.%Y")" testimejl@mojmejl.com