Eric Guo's blog.cloud-mes.com

Hoping writing JS, Ruby & Rails and Go article, but fallback to DevOps note

Building a Postfix Satellite SMTP Service to Avoid Active Mailer Run in Aliyun

• Permalink

Some situation is better avoid Sidekiq like reporting the exception mail, so it's always the best practices to building a Postfix Satellite SMTP service instead.

Install Postfix

Install Postfix
yum install -y postfix cyrus-sasl-plain # cyrus-sasl-plain is no need for Ubuntu
yum erase -y sendmail* # In case Sendmail is installed

Configure

Similar to gmail or SendGrid, every mail service vendor offer different combination of setting, below is only apply to AliYun

/etc/postfix/main.cf change

/etc/postfix/main.cf change
# comment out below
#inet_interfaces = localhost
relayhost = [smtp.mxhichina.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CApath = /etc/ssl/certs
smtp_use_tls = yes
smtp_generic_maps = hash:/etc/postfix/generic
mynetworks = 127.0.0.0/8
mydestination =

Create /etc/postfix/sasl_passwd

Create /etc/postfix/sasl_passwd
[smtp.mxhichina.com]:587 no-reply@domain.com:PASSWORD

Create /etc/postfix/generic

Create /etc/postfix/generic
root@staging.domain.com no-reply@domain.com

Create a database file

Create a database file
postmap /etc/postfix/sasl_passwd /etc/postfix/generic

Prevent non-root access:

Prevent non-root access:
chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db /etc/postfix/generic /etc/postfix/generic.db

Restart Postfix service

Restart Postfix service
/etc/init.d/postfix restart # or service postfix restart

Debug

It's very common that postfix will failed to sent mail at first time, so add below to main.cf.

Enable Postfix debug logging
debug_peer_level = 3
debug_peer_list = smtp.mxhichina.com

And open another console to testing via:

Send a test email through Postfix
echo "body of your email" | mail -s 'mail subject from console' -r 'no-reply@domain.com' guochunzhong@domain.com

You may also need postconf -n to review postfix configuration or postconf -d to review all setting.

YOu can also monitor the postfix activity via tail -f /var/log/syslog.

Comments