Configure Postfix to Forward E-mail to an External Address

Submitted by Will Jackson on Sat, 10/08/2011 - 3:00am

Overview

If you're new to running your own web server or VPS, you may find the need to configure email addresses.  Due to it's popularity and proven stability, Postfix was used for this example and was tested used Debian 6 Squeeze.  The following tutorial will outline the steps required for creating new email address for virtualhosts hosted on your server that forward to an external email address such as Yahoo! Mail, Gmail, Hotmail, or any other address that you desire.

 

Step 1 - Configure /etc/postfix/virtual

Configure virtual, adding entries for any new email addresses, accounts that are associated with them, and where you would like to forward the email to.

$ sudo nano /etc/postfix/virtual

Sample: (/etc/postfix/virtual)

person1@example.com person
person1 person1@realemail.com
person2@example.com person
person2 person2@realemail.com

Step 2 - Configure /etc/postfix/main.cf

Configure main.cf, adding entries for any new domains that you intended to use for e-mail.

$ sudo nano /etc/postfix/main.cf

Sample: (/etc/postfix/main.cf)

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
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
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = hostname.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = localhost, localhost.localdomain, localhost, domain1.com, domain2.com
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_alias_domains = domain1.com, domain2.com
virtual_alias_maps = hash:/etc/postfix/virtual

Step 3 - Update and Reload Postfix

Updating Postfix...

$ sudo postmap /etc/postfix/virtual
$ sudo newaliases
$ sudo /etc/init.d/postfix reload && sudo /etc/init.d/postfix restart

Step 4 - Testing and Debugging

To test the configuration, simply send an e-mail to the new address to confirm that it’s functional.  If you do not receive an e-mail or get a error response from the server, you can check the mail log with the following command:

$ cat /var/log/mail.info

Reference