Today I’ll show, how to configure email sending with your Debian Linux. The ability to send mails is a very useful feature for every long-running server machine, it’s an easy and common way to notify the administrator in case of any problems.

Here are configuration steps for mail-sending with Exim and Google Mail account (Google Apps accounts work the same way too).

  • first of all, we need to have Exim running. If not installed - install exim4 via:
apt-get update
apt-get install exim4

Configuration should be presented automatically after the installation. However, you can start configuration wizard of Exim every-time with

dpkg-reconfigure exim4-config
  • Answer all questions of the configuration wizard. The important one is.
  • a general type of mail configuration. Choose “sent by smarthost” if you wanna use the ability of e.g. Googlemail account. Then SMTP with dynamic IP would be difficult ;)
  • Provide a System Mail Name: e.g. mycompany.com
  • Provide IP addresses to listen on for incoming SMTP connections

Use 127.0.0.1 if you want only to send emails from the local machine and nothing for other IP’s.

  • Provide Machine handling outgoing mail for this host (smart host): smtp.gmail.com::587 Other parameters are not so important in our use case.

  • Now it’s time to provide credentials of your Gmail account. Therefore you need edit /etc/exim4/passwd.client file. Insert that for Standard or google app account but replace with valid mail and password.

gmail-smtp.l.google.com:yourYourMail@googlemail.com:yourPass
*.google.com:yourYourMail@googlemail.com:yourPass
smtp.gmail.com:yourYourMail@googlemail.com:yourPass
  • Make sure /etc/exim4/passwd.client belongs to user root and group Debian-exim which is normal so on my Debian. If not, run that command:
chown root:Debian-exim /etc/exim4/passwd.client
  • Actualize the whole configuration with:
update-exim4.conf

So now everything should be in place and we are ready for a first test. Simplest console test should be working via:

echo "Server Mail Test Message " | mail -s "Just Test" SomeMail@someDomain.org

Watch logs with:

tail -1000f /var/log/exim4/mainlog

when you see something like this everything vent perfect:

2010-02-14 23:00:26 1NgmVu-0007v8-Kt < = root@mail-server1.mycompany.com U=root P=local S=424
2010-02-14 23:00:28 1NgmVu-0007v8-Kt => testMail@mycompany.org R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com [72.14.221.109] X=TLS1.0:RSA_ARCFOUR_MD5:16 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=smtp.gmail.com"

Appreciate your feedback.