On Wed, 2015-10-14 at 10:36 -0400, Bill Cole wrote:

> Self-hosting email is feasible if you have a proper business-fit
> Internet connection: static IP, rDNS in your own domain, no filtering 
> or DNS hijacking. MacOS X Server isn't a horrible (any more... ) mail
> server and if you're willing to manage it in Terminal, any old Mac 
> can take a Postfix installation much like any other Unix-flavored OS 
> and use SA via AmavisD (most common) or MIMEDefang (my preference). 
> If your own connectivity isn't suited for self-hosting, there are 
> specialist MacOS X hosting operations out there.
> 
Actually, the there *is* one way that a small volume user can run their
own MTA and do it without port forwarding making holes in your
firewall. This is to use getmail to retrieve your mail from your ISP's
smarthost via a POP3 connection and deliver it to your MTA. Outgoing
mail is delivered to your ISP's smarthost by an SMTP connection as
usual. Doing it this way means that it doesn't matter whether you have
a static or dynamic IP because that's invisible to an outsider: they
see their mail going to and coming from to the ISP and nothing else.

I've been doing it this way for several years. Points, in order of
incoming mail flow:

- I prefer getmail to the more commonly recommended fetchmail 
  because it has fewer bugs and doesn't forget to delete mail
  its fetched from the ISP's POP3 mailbox. 

  The main operational difference is that, while fetchmail is a daemon 
  which schedules its own POP3 sessions to fetch mail from the ISP's
  smarthost, getmail is run as a cron job with a 10-15 minute cycle.

- Both getmail and fetchmail use a script as their mail delivery
  agent. The same script works with both programs, so swapping between
  them is easy. I filter incoming mail by calling spamc from the MDA
  script and pipe spamc's output through a locally written program.
  This pipes ham into postfix's sendmail for local delivery to my MTA
  and drops spam into a quarantine folder.

- a daily cron job deletes quarantined mail after a week. 

- my house server runs Apache as well as Postfix, SA and the getmail
  and quarantine cleaning cron jobs. I wrote myself a PHP script for
  looking at quarantined mail.

- I use Postfix as my MTA and back-end it with Dovecot to provide a
  POP3 service to the MUA on this 'ere laptop.

- My MUA sends outbound mail to my Postfix MTA, which forwards it to my
  ISP's smarthost using SMTP. 

- Outbound mail follows this path so it will feed into my mail archive,
  which hoovers up all non-spam inbound and all outbound mail via an
  automatic BCC in Postfix and an overnight cron job which archives all
  the mail that gets BCCed to its mailbox. This provides me with a
  private, automatic whitelisting service: a personal SA plugin looks
  up the senders of inbound mail in the archive: if I've ever sent them
  mail, they get whitelisted.  
  
As Bill Cole said, this type of mail system is largely maintenance free
once its set up and working correctly. Almost the only thing I need to
do to it is to add an SA rule or two if a new form of spam comes along.
All the mail handling programs (getmail, Postfix, Dovecot, Evolution
[my MUA of choice]) are standard packages, so get updated
automatically. The various cron jobs just sit in the background and do
their stuff. I get a daily report on how things are going via logwatch,
so its easy to keep an eye on how its all going, how much junk is in
quarantine, etc.


Martin


Reply via email to