Reading your mail
You can use any user agent that support maildir locally (mutt, alpine, etc), and any client that support POP3 or SMTP either locally or remotely. We also have webmail.
Here are the details:
- maildir
- Location: $HOME/.maildir/
- POP3
- Hostname: caffeine.csclub.uwaterloo.ca
- SSL encryption required
- Port: 995
- IMAP
- Hostname: caffeine.csclub.uwaterloo.ca
- SSL encryption required
- Port: 993
Technical Details
Mail Transfer (Incoming)
Postfix is our MTA and runs on caffeine. Incoming mail is received inbound on smtp/25 or ssmtp/465 and goes through a sequence of filters before being delivered to users.
We are using the following filters for incoming mail, to combat spam and malware:
- ClamAV via ClamSMTP
- zen.spamhaus.org RBL
- Greylisting with postgrey
The latter two reject truckloads of spam, preventing them from reaching your inbox. The former helps keep us from passing malware along. Greylisting adds a delay to mail delivery from unknown servers, but after a small number of successes they will be auto-whitelisted. If that isn't good enough, ask systems-committee@csclub.uwaterloo.ca to whitelist all mail to your address.
Mail Delivery
User mail is delivered, by default, to procmail. This is configurable by adding a comma-separated list of destinations in $HOME/.forward. See aliases(5) for more details.
Procmail, in turn, writes mail to $HOME/.maildir unless instructed otherwise. You can customize procmail by editing $HOME/.procmailrc. See procmailrc(5) for more details.
Failures
If you are out of quota or another error occurs writing to your home directory, procmail will deliver your message to /var/mail/$USER on the mail server. If that too fails, caffeine is probably on fire. The message will be returned to the queue where it will eventually bounce.
Mail Retrieval
We run Dovecot, a POP3 and IMAP server. It reads messages from $HOME/.maildir, so if you have procmail deliver elsewhere you will not be able to retrieve your mail using these protocols.
Mail Submission (Outgoing)
On caffeine, outgoing mail is submitted directly to Postfix via the sendmail(1) wrapper or on submission/587. Submitted mail is then queued for delivery to its destination. The other systems have no MTA and instead run sSMTP, which relays mail through caffeine immediately without any queue or daemon.
Any system that needs to relay mail through caffeine must be added to /etc/hosts (this includes all systems running sSMTP). A cron job on caffeine makes a hash table out of /etc/hosts, and any address present in the table will be able to relay mail.