Developing and testing applications sometimes require you to go the "non-standard" way. A good example is when you have a web-application which has a mail function. The mails must correctly be sent but remember, this is just a test of the application and you don't want your users to get spammed with test mails.
A fake/dummy mail server comes in handy. A developer suggested MailCatcher, which looked good to me except that it's written in ruby and depends on gems which I didn't want to put on this system. At least not if I find something easier...
Then I came across Dummy-SMTP, a simple listener written in python (so no additional software to be installed on my Ubuntu test servers) just saving all the received mails as text files in a folder.
By default, Dummy-SMTP runs on port 25 which requires root privileges to start with and it also must be started from within the correct folder. I made some modifications for the following purposes:
In my case, I defined the listener port to be 1025 and defined an absolute path: /srv/Dummy-SMTP which I chose where to run the listener.
To install Dummy-SMTP either clone the original repository or my forked one:
cd /srv/
git clone https://github.com/Napsty/Dummy-SMTP.git
chown -R appuser:appuser /srv/Dummy-SMTP
Once the repository was cloned, become "appuser" if you aren't already and launch the listen.py file:
appuser@app01-test:~$ /srv/Dummy-SMTP/listen.py &
[1] 32189
Running fake smtp server on port 1025
Now I adapted the Postfix installation and defined that all mails should be relayed to this fake smtp server by setting the relayhost parameter:
cat /etc/postfix/main.cf|grep relayhost
relayhost = 127.0.0.1:1025
service postfix reload
From now on a mail sent from this server should be relayed to the dummy smtp server and be just stored as a text file in /srv/Dummy-SMTP/mails. Let's try this:
echo "Dummy SMTP Test" | mailx -s "Test" recipient@example.com
mail.log shows:
app01-test postfix/pickup[30289]: 3559024A6A: uid=0 from=
app01-test postfix/cleanup[4940]: 3559024A6A: message-id=<20160607120336.3559024A6A@app01-test.local>
app01-test postfix/qmgr[30290]: 3559024A6A: from=
app01-test postfix/smtp[4942]: 3559024A6A: to=
app01-test postfix/qmgr[30290]: 3559024A6A: removed
And let's check out the Dummy SMTP mail folder:
ls /srv/Dummy-SMTP/mails
1465301016.24.txt
cat /srv/Dummy-SMTP/mails/1465301016.24.txt
Received: by app01-test.local (Postfix, from userid 0)
id 3559024A6A; Tue, 7 Jun 2016 14:03:36 +0200 (CEST)
Subject: Test
To:
X-Mailer: mail (GNU Mailutils 2.99.98)
Message-Id: <20160607120336.3559024A6A@n
Date: Tue, 7 Jun 2016 14:03:36 +0200 (CEST)
From: root@nzzshop-app01-test (root)
Dummy SMTP Test
Neat! It worked.
The above mentioned Ruby alternative Mailcatcher has one nice feature though: The mails can be seen by browser. Well, this isn't very complicated either. The mail folder of the dummy smtp server is a given (/srv/Dummy-SMTP/mails) so by creating a simple "Alias" on the Apache running already on this test server, I was able to display all sent mails on the browser, too:
cat /etc/apache2/conf-enabled/dummysmtp.conf
Alias /mails "/srv/Dummy-SMTP/mails/"
Require all granted
Options +FollowSymLinks +Indexes
AllowOverride All
</directory>
service apache2 reload
Nothing fancy of course, but it works:
No comments yet.
AWS Android Ansible Apache Apple Atlassian BSD Backup Bash Bluecoat CMS Chef Cloud Coding Consul Containers CouchDB DB DNS Database Databases Docker ELK Elasticsearch Filebeat FreeBSD Galera Git GlusterFS Grafana Graphics HAProxy HTML Hacks Hardware Icinga Influx Internet Java KVM Kibana Kodi Kubernetes LVM LXC Linux Logstash Mac Macintosh Mail MariaDB Minio MongoDB Monitoring Multimedia MySQL NFS Nagios Network Nginx OSSEC OTRS Office PGSQL PHP Perl Personal PostgreSQL Postgres PowerDNS Proxmox Proxy Python Rancher Rant Redis Roundcube SSL Samba Seafile Security Shell SmartOS Solaris Surveillance Systemd TLS Tomcat Ubuntu Unix VMWare VMware Varnish Virtualization Windows Wireless Wordpress Wyse ZFS Zoneminder