Actualización: Siguiendo el consejo de un amigo de TI, estoy ejecutando postfix en todos mis servidores, en lugar de crear un servidor de correo en la nube. Aquí está mi solución hasta ahora:
/etc/postfix/main.cf
# output of hostname -f - mail from local users appears to come from here
myhostname = domU-01-02-03-04-05-06.compute-1.internal
# Local delivery - include all 127.0.0.1 aliases from /etc/hosts
mydestination = $myhostname, $mydomain, rest_of_entries_from_hosts
# Needed for address translation to work
myorigin = $mydomain
# Talking to MS Online
# :submission = port 587
relayhost = [smtp.mail.microsoftonline.com]:submission
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = # Yes, leave empty
smtp_tls_security_level = encrypt
smtp_generic_maps = hash:/etc/postfix/generic
# Enable if you need debugging, but it does leak credentials to the log
#debug_peer_level = 2
#debug_peer_list = smtp.mail.microsoftonline.com
# Only listen on the local interfaces (not the public)
inet_interfaces = localhost
# I left out a bunch of CentOS defaults. postconf -n is your friend.
# These are included
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
/etc/postfix/sasl_passwd
# Run postmap /etc/postfix/sasl_passwd after editing
# Also, chown root:root; chmod 600
smtp.mail.microsoftonline.com relayer@hosteddomain.com:YourP@ssw0rd
/etc/postfix/generic
# Run postmap /etc/postfix/generic
# I've seen local mail come from either source
# output of dnsdomainname
@compute-1.internal relayer@hosteddomain.com
# output of hostname -f
@domU-01-02-03-04-05-06.compute-1.internal relayer@hosteddomain.com
/etc/aliases
# Run newaliases after changing
# Lot of stuff here. Mostly, just make sure the graph points to root, such as
mailer-daemon: postmaster
postmaster: root
# And the important part - your email or distribution group
root: awsadmins@hosteddomain.com
/etc/passwd
# Sometimes it helps to expand the name, so email comes from 'root at aws host 5'
# rather than just 'root'
# Was
#root:x:0:0:root:/root:/bin/bash
# Is
root:x:0:0:root on aws host 5:/root:/bin/bash
Cosas por las que estoy feliz:
- Se envía una gran cantidad de correo a la raíz, y la única línea
alias
indica quién lo recibe.
- Todo el correo de los usuarios locales se traduce como proveniente de
relayer@hosteddomain.com
, por lo que pasa a través del servidor SMTP en línea de MS.
- postfix tiene una documentación mucho mejor que sendmail.
Cosas por las que no estoy contento:
- Se requieren cambios personalizados para cada host y varios pasos. Escribí un script bash para ayudar.
- El
passwd
truco del nombre no siempre funciona, y puede ser difícil determinar de qué servidor proviene un correo.
- Cada correo enviado pone tres advertencias en el registro:
warning: smtp.mail.microsoftonline.com[65.55.171.153] offered null AUTH mechanism list
(El servidor SMTP envía una AUTH
lista nula antes STARTTLS
, pero AUTH LOGIN
después).
certificate verification failed for smtp.mail.microsoftonline.com: num=20:unable to get local issuer certificate
(Hay algunas opciones de configuración en torno a los certificados, pero no estoy seguro si la entrega del correo se rompe cuando se renueva el certificado)
certificate verification failed for smtp.mail.microsoftonline.com: num=27:certificate not trusted
(Igual que # 2)
Gracias a la comunidad serverfault por compartir opiniones sólidas sobre los servidores de correo.