Home › Forums › Single board computers › Raspberry Pi › RaspberryPi as a Mail Server
Tagged: email, raspberry pi, server, setup
- This topic has 4 replies, 1 voice, and was last updated 11 years, 4 months ago by PMB.
-
AuthorPosts
-
October 13, 2012 at 12:55 pm #1820PMBKeymaster
I’ve had a fetchmail-dovecot system running on a Ubuntu server for a couple of years without any problems. I thought I’d experiment a bit to see if I can set up a R-Pi to do the same thing, maybe storing the mail on a USB memory stick.
This is just somewhere to make notes for my own use. It’s not intended to be a step-by-step how-to. If I was to get it working, I may expand it out.
October 13, 2012 at 7:12 pm #1836PMBKeymasterRemember: this is just an apparently random series of notes that I’ll tidy up later.
Reference only : Installed ubuntu server and specify a mail server
.
NOTE: I had this all formatted with code blocks etc. BUT the damned editor keeps deleting all the formatting
(see here)
so I’ve given up. I could drown the dick-head responsible for this “feature”.
.
$ sudo nano /etc/default/fetchmail
. change START_DAEMON to yes to allow fetchmail to run LAMP and a few Misc Packages Linux Apache, MySQL, PHP.
I probably installed things in the wrong order and it took a bit of sorting out.
At various stages I got error messages that seemed to relate to dovecot.
$ sudo apt-get install mc
$ sudo apt-get install Apache2
$ sudo apt-get install php5 libapache2-mod-php5
$ sudo /etc/init.d/apache2 restart
To test php
$ sudo nano /var/www/testphp.php
. <!–?php include(“config.php”);
. mysql_connect(“$dbhost”, “$dbuname”, “$dbpass”);
. mysql_select_db(“$dbname”);
. echo mysql_error();
. phpinfo();
. ?–> http://192.168.1.56/testphp.php
.
$ sudo apt-get install mailutils
$ sudo apt-get install mysql-server
$ sudo nano /etc/mysql/my.cnf
. bind-address = 127.0.0.1 #
. change line to your IP address
$ sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
$ sudo nano /etc/php5/apache2filter/php.ini extension=mysql.so # uncomment this line
$ sudo /etc/init.d/apache2 restart
Hostname What is the current hostname: hostname -f Change the hostname:
$ sudo nano /etc/hostname pmb.co.nz
$ sudo nano /etc/hosts
. change hostname from original to new
. change reverse DNS = determining a domain name from a given IP address
…… install dnsutils = various client programs related to DNS:
Then you can check the reverse DNS:
$ dig -x “ip-address”
.
Install fetchmail
Fetchmail is a remote mail retrieval and forwarding utility. It gets the mail in from one or a number of sources and puts it in a folder where it can be picked up by the next step in the process.
$ sudo apt-get install fetchmail
Edit the config file fetchmailrc in directory /etc
$ sudo nano /etc/fetchmailrc
$ sudo nano /etc/default/fetchmail
. change START_DAEMON to yes ; to allow fetchmail to run
$ sudo /etc/init.d/fetchmail start ; Starting fetchmail – gave an error: pi@pmb ~ $
$ sudo /etc/init.d/fetchmail restart [….] Restarting mail retriever agent: fetchmailfetchmail: cannot open /var/log/fetchmail.log: Permission denied fetchmail: fetchmail: Cannot detach into background. Aborting.
After trying various locations, I put the log file in -var-log-. Created a new user (paul) in the process. The error was fixed changing the log file ownership to fetchmail-root
.
Postfix
A mail transport agent. A popular alternative to sendmail.
$ sudo apt-get install postfix ; when prompted, select “internet with smarthost” and enter your mail name (pmb.co.nz): Redirect mail from root user to your user name then reload:
$ sudo nano /etc/aliases root: paul sudo newaliases
Edit the main postfix config file and change 3 lines at the end of the file and restart postfix:
$ sudo nano /etc/postfix/main.cf
. myorigin = $pmb.co.nz
. mydestination = $pmb.co.nz, localhost.$pmb.co.nz, localhost
. mynetworks = 127.0.0.0/8
$ sudo /etc/init.d/postfix restart
To test it, send email using php interactive shell (address, subject, body):
. php -a mail (‘paul@pmb.co.nz’, “PMB- A simple test email”, “testing… testing…”);
. extit ();
.
Dovecot
Dovecot is a Mail Delivery Agent (MDA), set up as a IMAP or POP3 server. Mail is stored in /home/paul/Maildir/
Edit these files to configure dovecot:
$ sudo apt-get install dovecot-imapd dovecot-pop3d
$ sudo nano /etc/dovecot/dovecot.conf
$ sudo nano /etc/dovecot/10-auth.conf
$ sudo nano /etc/dovecot/10-mail.conf
$ sudo nano /etc/dovecot/10-pop3.conf
. Create the Maildir for future users:
$ sudo maildirmake.dovecot /etc/skel/Maildir
$ sudo maildirmake.dovecot /etc/skel/Maildir/.Drafts
$ sudo maildirmake.dovecot /etc/skel/Maildir/.Sent
$ sudo maildirmake.dovecot /etc/skel/Maildir/.Trash
$ sudo maildirmake.dovecot /etc/skel/Maildir/.Templates
.
For existing users:
$ sudo cp -r /etc/skel/Maildir /home/paul/
$ sudo chown -R paul:paul /home/paul/Maildir
$ sudo chmod -R 700 /home/paul/Maildir
.
To start/stop/restart dovecot
$ sudo /etc/init.d/dovecot start
To see if dovecot is running: ps -A | grep dovecot
.
Mount the USB drive:
The usb drive must be ext4 formatted so you can chown and chmod it.
$ umount /dev/sda1
$ sudo mkfs.ext4 /dev/sda1
.
Auto-mount USB drive at boot by adding to /etc/rc.local mount /dev/sda1 /home/paul/usb1_data
.
From /home/paul/ create a symlink to make the Maildir on the usb flash drive appear to be in /home/paul
$ sudo ln -s /home/paul/usb1_data/Maildir Maildir
.
A useful command to determine the total size of a directory and everything in and below it:
$ du -sh /directory/
.
NOTES:
$ dpkg -Swhich sendmail
$ sudo netstat -pel | grep smtp
$ dpkg -S “$(sudo ps ux | grep 3281 | awk ‘{print $NF}’)” ; note 3281 came from the previous command result
$ tail -f /var/log/mail.log ; view mail logs
$ sudo fuser -uv 25/tcp ; show all processes listening on port 25
.
References: https://help.ubuntu.com/community/Dovecot
.
ERROR LOGS – REPAIRS NEEDED
linaro@mail2:~$ tail -f /var/log/mail.log
Jul 8 14:20:06 mail2 postfix/local[1065]: 69A3BFEA8: to=, orig_to= , relay=local, delay=38220, delays=38216/2.8/0/0.38, dsn=4.3.0, status=deferred (temporary failure)
Jul 8 14:20:07 mail2 dovecot: lda(root): Error: user root: Initialization failed: Initializing mail storage from mail_location setting failed: mkdir(/root/Maildir) failed: Permission denied (euid=65534(nobody) egid=65534(nogroup) missing +w perm: /root, dir owned by 0:0 mode=0755)
Jul 8 14:20:07 mail2 dovecot: lda(root): Error: user root: Initialization failed: Initializing mail storage from mail_location setting failed: mkdir(/root/Maildir) failed: Permission denied (euid=65534(nobody) egid=65534(nogroup) missing +w perm: /root, dir owned by 0:0 mode=0755)
Jul 8 14:20:07 mail2 dovecot: lda(root): Fatal: Invalid user settings. Refer to server log for more information.
Jul 8 14:20:07 mail2 postfix/local[1013]: 6B33BFE86: to=, orig_to= , relay=local, delay=91701, delays=91697/3.2/0/0.3, dsn=4.3.0, status=deferred (temporary failure)
Jul 8 14:20:07 mail2 dovecot: lda(root): Fatal: Invalid user settings. Refer to server log for more information.
Jul 8 14:20:07 mail2 postfix/local[923]: 89CDBFE91: to=, orig_to= , relay=local, delay=91520, delays=91517/3.2/0/0.3, dsn=4.3.0, status=deferred (temporary failure)
Jul 8 14:20:07 mail2 dovecot: lda(root): Error: user root: Initialization failed: Initializing mail storage from mail_location setting failed: mkdir(/root/Maildir) failed: Permission denied (euid=65534(nobody) egid=65534(nogroup) missing +w perm: /root, dir owned by 0:0 mode=0755)
Jul 8 14:20:07 mail2 dovecot: lda(root): Fatal: Invalid user settings. Refer to server log for more information.
Jul 8 14:20:07 mail2 postfix/local[975]: 817AFFE89: to=, orig_to= , relay=local, delay=91606, delays=91602/3.5/0/0.14, dsn=4.3.0, status=deferred (temporary failure)
q^COctober 13, 2012 at 7:12 pm #1837PMBKeymasterreserved 1
October 13, 2012 at 7:12 pm #1838PMBKeymasterreserved 2
July 5, 2013 at 1:47 pm #2216PMBKeymasterHere’s a good one…
Last night I noticed that our traffic was high by about 1G/day and had been for the last 3 days. Some investigating narrowed it to the email server. The logs showed postfix was rejecting a message as too large. A customer had sent a set of pictures totaling about 14MB. It’s been downloading 10MB and failing every 8 minutes for 3 days.
I edited postfix main.cf to include “message_size_limit = 20480000”. All fixed.
-
AuthorPosts
- You must be logged in to reply to this topic.