Setting up SMTP server on a development test server running Ubuntu

This is a simple step-by-step tutorial to install and configure exim to route all e-mails send though a local SMTP server to one local user, regardless of the e-mail address or domain. I found this set-up very usefull when testing applications that send e-mail messages and you do not want to generate multiple HotMail accounts for testing or in case I'm wanted to do some testing and development when I'm offline.

Install exim

Start with installing exim.
user@devmachine:~$ sudo apt-get install exim4

Configure exim to handle desired domains

Next step is to confiure exim to treat a number of domains as local.

user@devmachine:~$ sudo dpkg-reconfigure exim4-config
Use the answers below and modify to suite your own needs.

General type of mail configuration
local delivery only; not on a network
System mail name
enter hostname example devmachine
IP-addresses to listen on for incoming SMTP connections
127.0.0.1 ; ::1
Other destinations for which mail is accepted
devmachine; example.com; hotmail.com
Keep number of DNS-queries minimal (Dial-on-Demand)?
No
Delivery method for local mail
mbox format in /var/mail/
Split configuration into small files?
no
Mail for 'postmaster', 'root' and other system accounts needs to be redirected to the user account of the actual system administrator.
Leave empty we will take care of this below.

Configure catch all

So now we want to make sure all emails are routed to the same local user. Start by creating the file /etc/exim4/conf.d/router/950_exim4-config_catchall with this content.

catch_all:
   debug_print = "R: catch_all for $local_part@$domain"
   driver = redirect
   data = ${lookup{*}lsearch{/etc/aliases}}

Then add the following to /etc/aliases. Replace user with your local username.

*: user

Build new exim4 config and restart

user@devmachine:~$ sudo update-exim4.conf.template -r
user@devmachine:~$ sudo update-exim4.conf
user@devmachine:~$ sudo service exim4 restart
* Stopping MTA for restart [ OK ]
* Restarting MTA [ OK ]

Done!

Tags: