Re: Port blocking?
You don't need *any* ports open in your firewall or a static IP.
Use fetchmail or getmail (getmail is better because it doesn't have fetchmail's bugs) to retrieve your mail from your ISP's smartmail host via a POP3 link. No open ports needed in your firewall because getmail opens a connection to the smartmail host.
Your MTA (Postfix in my case) is set up to send outgoing mail via your ISP's smartmail host, so once again no open ports because your MTA opens the connection. Doing this avoids getting your mail blacklisted because it has come from a user's IP address: blacklisting user IPs is quite common, especially if they are dynamically assigned addresses.
The rest? My copy of getmail passes mail directly to Spamassassin. What comes back marked as spam gets quarantined and the rest is passed to Postfix for delivery via Dovecot.
I wrote my own mail archive, based on PostgreSQL. Feeding that is automatic: all incoming and outgoing mail goes through Postfix, which BCCs a copy to the archive. The archive is fast because its a database: it can find any message in 10 secs and optionally deliver it to my mailreader. That's certainly faster than I can ferret through a large mailbox regardless of whether its an IMAP store or not. Details at www.libelle-systems.com if you're interested.