Photo by sue hughes on Unsplash
Photo by sue hughes on Unsplash

How to set up a SMTP relay on your Proxmox node

5-minute craft, specially useful for those self-hosted Proxmox users who seek sending e-mails to their remote inboxes directly from their nodes:


  • Your Proxmox run behind a NAT / is not directly accessible on the Internet so you find trouble sending native system e-mails by default
  • You have an already existing e-mail address you would want to make your Proxmox host use to send mails to you
  • The connection method to the "sender" e-mail address will be using password authentication

Step by step:

  1. First off, install some dependencies. Run as root:

    apt-get update
    apt-get install libsasl2-modules
  2. Edit the /etc/postfix/ file like this (replace relayhost’s key value to suit your needs):

    # See /usr/share/postfix/ for a commented, more complete version
    smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
    biff = no
    # appending .domain is the MUA's job.
    append_dot_mydomain = no
    # Uncomment the next line to generate "delayed mail" warnings
    #delay_warning_time = 4h
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    #mydestination = $myhostname, localhost.$mydomain, localhost
    mynetworks =
    inet_interfaces = loopback-only
    recipient_delimiter = +
    sender_canonical_classes = envelope_sender, header_sender
    sender_canonical_maps =  regexp:/etc/postfix/sender_canonical_maps
    smtp_header_checks = regexp:/etc/postfix/header_check
    relayhost = :
    smtp_use_tls = yes
    smtp_sasl_auth_enable = yes
    smtp_sasl_security_options = noanonymous
    smtp_tls_wrappermode = yes
    smtp_tls_security_level = encrypt
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
  3. Edit or create the /etc/postfix/sasl_passwd file, that will contain the following line (remember to place your own values there):

    :    @:
  4. Change file permissions with:

    chmod 600 /etc/postfix/sasl_passwd
  5. Run:

    postmap /etc/postfix/sasl_passwd
  6. Edit or create the file /etc/postfix/sender_canonical_maps containing:

    /.+/    @
  7. Edit or create the file /etc/postfix/header_check with the following:

    /From:.*/ REPLACE From: @
  8. Apply changes by restarting Postfix service:

    systemctl restart postfix.service

And that’s it. You can always manually test if it works by running:

echo "This is a test e-mail" | mail -s "Testing" <receiver>@<>

See you next time!