This article outlines specifically how to use your server to send emails for server administration purposes only . Another term for this is setting up a null client.
For receiving emails and hosting it is recommend to use a dedicated mail server. Non-profits or small businesses should consider the using Google Apps which is free.
Install Postfix
Postfix is free and open-source mail transfer agent (MTA) that routes and delivers electronic mail. It is intended as a fast, easier-to-administer, and secure alternative to the widely-used Sendmail MTA.
sudo apt-get install postfix
Configuring Postfix
You will be provided a command line UI to selection some options.
Please select the mail server configuration type that best meets your needs. = Internet Site
The "mail name" is the domain name used to "qualify" _ALL_ mail addresses without a domain name. = (leave default is fine)
At the end,
Postfix is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.
I then modified the main.cf to add my MX record for mydestination,
# 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 (Ubuntu) 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. smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = t01app alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = bonsaiframework.com, t01app, localhost.localdomain, , localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all
When time available write up more on these options, ie how I setup my MX record on my domain server to use Google's email service.
Basics of Postfix
Default installations of Postfix stores all messages in an mbox file. To see what directory it is using use the command,
sudo postconf mail_spool_directory mail_spool_directory = /var/mail # This is the default directory.
The newer maildir format is now recommened so follow the next section to change to maildir.
Setup Mail Delivery Account
The overall consensus is to use the maildir format with a mail directory being used for each user.
main.cf
Backup /etc/postfix/main.cf in case something goes wrong. All the subsequent commands modify main.cf,
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.v0.0.bck
The following command will do make the following changes,
- Set emails to the users home directory under a subfolder called Maildir.
- The trailing slash indicating a folder, will configure Postfix to use the maildir format. Note, if you forge the slash, a file called maildir will be generated in mbox format.
sudo postconf -e 'home_mailbox = Maildir/'
In most cases, your system is being used to send email outbound and not receive email or deliver the emails locally to the system.
sudo postconf -e "inet_interfaces = loopback-only" # receive no mail from the network, and do not deliver any mail locally
Reverse DNS
TBC - This should explain why we would want reverse dns.
Reverse DNS unless delegated is managed by the ISP provider. Generally this means whoever manages the IP address of your server.
Setup spf Records
TBC - This section should be filled out with a general discussion of what spf is for and how to configure within Rackspace or your registrar.
Test
Here is how to send a test email.
First install a simple mail program. In this example we will use mailx,
sudo apt-get install bsd-mailx
Next send the email,
echo "test" | mail -s testsubject bhitch@imagecomics.com
The log for a valid send will look something like this,
tail /var/log/mail.log Jun 23 22:06:38 krypton postfix/pickup[15174]: AA67C2F824D: uid=2500 from=<tinpham> Jun 23 22:06:38 krypton postfix/cleanup[15988]: AA67C2F824D: message-id=<20110624020638.AA67C2F824D@myra> Jun 23 22:06:38 krypton postfix/qmgr[15175]: AA67C2F824D: from=<bhitch@krypton.com>, size=294, nrcpt=1 (queue active) Jun 23 22:06:39 krypton postfix/smtp[15990]: AA67C2F824D: to=<bhitch@rogers.com>, relay=mx1.rog.mail.yahoo.com[98.139.214.154]:25, delay=1, delays=0.02/0.01/0.25/0.74, dsn=2.0.0, status=sent (250 ok dirdel) Jun 23 22:06:39 krypton postfix/qmgr[15175]: AA67C2F824D: removed
If you do not see your receive your test email, try looking in your spam folder.
References
https://help.ubuntu.com/10.04/serverguide/C/postfix.html - How to setup postfix
http://www.linuxmail.info/mbox-maildir-mail-storage-formats/ - Deciding on Mbox vs Maildir
http://www.tummy.com/Products/vpostmaster/recipes/dovecotsasl.html - Syrus vs Dovecot
http://articles.slicehost.com/2010/3/1/barebones-postfix-install-for-ubuntu - Slicehost instructions on postfix, has notes here about reverse dns being needed
http://cloudservers.rackspacecloud.com/index.php/Postfix_-_Basic_Settings_in_main.cf - Rackspace instructions on postfix, the Slicehost actually seems better
http://www.postfix.org/STANDARD_CONFIGURATION_README.html - talks about null client