Configurar Postfix usando Gmail en RPI

    En este post, vamos a integrar Gmail con la línea de comandos para poder enviar correos mediante la linea de comandos en una Raspberry. Muy similar al post que se hizo en anterioridad.

    Realizaremos la instalación y configuración básica del servicio Postfix

    export DEBIAN_PRIORITY=low
    export DEBIAN_FRONTEND=noninteractive
    
    debconf-set-selections <<< "postfix postfix/mailname string $(hostname -s)"
    debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
    dpkg-reconfigure debconf
    
    apt-get install -y postfix sasl2-bin libsasl2-modules libsasl2-2 mailutils ca-certificates
    
    service postfix stop
    
    cat > /etc/postfix/main.cf << EOF
    alias_database = hash:/etc/aliases
    alias_maps = hash:/etc/aliases
    append_dot_mydomain = no
    biff = no
    compatibility_level = 2
    inet_interfaces = 127.0.0.1
    inet_protocols = ipv4
    mailbox_size_limit = 0
    #mydestination = $myhostname, $(hostname -s), localhost.localdomain, , localhost
    mydestination = localhost
    myhostname = $(hostname -s)
    mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    readme_directory = no
    recipient_delimiter = +
    smtpd_banner = $myhostname ESMTP $mail_name
    smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
    smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    data_directory=/var/lib/postfix
    smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
    smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
    smtpd_use_tls=yes
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
    smtp_use_tls = yes
    relayhost = [smtp.gmail.com]:587
    EOF
    

    Ahora, accederemos a https://myaccount.google.com/security y seleccionaremos la opción Llaves de acceso y llaves de seguridad, para crear una llave. Es la llave que nos servirá para autenticar.

    También será necesario activar Verificación en dos pasos, en el menú anterior

    Si hemos realizado todos los pasos, deberíamos tener los siguientes puntos activos:

    En este punto, añadiremos la llave de seguridad que anteriormente se nos ha proporcionado junto a nuestro email:

    cat > /etc/postfix/sasl_passwd << EOF
    [smtp.gmail.com]:587 [email protected]:123456abcdef
    EOF
    

    Forzamos a que Postfix recargue la configuración y aplicamos unos permisos mas restrictivos

    chmod 0400 /etc/postfix/sasl_passwd
    postmap /etc/postfix/sasl_passwd
    
    chmod 640 /etc/postfix/main.cf /etc/postfix/
    chown -R root:root /etc/postfix/
    

    Configuraremos el envio de correos para que el "From" sea modificado evitando que aparezca el email

    echo "/^From:[[:space:]]+(.*)/ REPLACE From: "System Raspberry - $(hostname -s)" " > /etc/postfix/header_checks
    
    cd /etc/postfix
    postmap header_checks
    postconf -e 'smtp_header_checks = regexp:/etc/postfix/header_checks'
    
    echo 'root: /dev/null' > /etc/aliases
    postalias /etc/aliases
    

    Evitaremos que crontab envie correos

    chmod 600 /var/spool/cron/crontabs/root
    echo 'MAILTO=""' >> /etc/crontab
    sed  -i '1i MAILTO=""' /var/spool/cron/crontabs/root
    service cron restart
    

    Finalmente, realizaremos un reinicio del servicio aplicando todas las configuraciones anteriores

    postconf -n
    service postfix restart
    

    Ahora, vamos a probar el envío:

    echo "mail" | mail -s "$(hostname -s)" [email protected]
    

    Vemos en las trazas de los logs que el correo se ha enviado (status=sent)

    May  2 19:06:48 node01 postfix/pickup[632]: 330815201: uid=0 from=
    May  2 19:06:48 node01 postfix/cleanup[646]: 330815201: message-id=<20240502170648.330815201@rpi01>
    May  2 19:06:48 node01 postfix/qmgr[634]: 330815201: from=, size=309, nrcpt=1 (queue active)
    May  2 19:06:49 node01 postfix/smtp[648]: 330815201: replace: header From: root : From: System Raspberry - node01 
    May  2 19:06:50 node01 postfix/smtp[648]: 330815201: to=, relay=smtp.gmail.com[108.177.15.108]:587, delay=2.2, delays=0.26/0.46/0.83/0.68, dsn=2.0.0, status=sent (250 2.0.0 OK  1714669610 z16-20020a5d4c90000000b0034dfd6fbc96sm1682933wrs.63 - gsmtp)
    May  2 19:06:50 node01 postfix/qmgr[634]: 330815201: removed
    

    y comprobamos que en Gmail hemos recibido el correo:

    Leave a Reply

    Your email address will not be published. Required fields are marked *