I do value my own time, and I'll say it again – post setup, I really spend no appreciable time keeping my mail server running. My VPS provider handles all hardware issues (with zero downtime in the last two years), backups consist of a nightly cron job and require no manual intervention, and the last time I touched my Postfix configuration was over a year ago.
"Rolling my own filtering" consists of placing a single mailbox_command line in the Postfix configuration file, it hardly qualifies as a time sink. Writing mail filters for procmail takes no more time than doing so in Gmail, the difference is that the former lets you write much more expressive and fine-grained rules.
And yes, SpamAssassin does have a built-in learning Bayesian classifier. Which I previously used to learn from anything that I manually classified as spam, but these days I don't even get any spam to invoke it on. See sa-learn(1) for details.
You are missing a very critical point: either you need to rent a virtual or real server and spend time configuring and maintaining it - or you could try and dare to run your mail server from at home on some linux box which will open a whole can of worms...
So gmail gives you an easy and free alternative and you can just sign up and access mail via web, pop3 and especially IMAP, which made it superior to pretty much every single other webmail when they launched that feature - and I believe that is still true today, most free webmail providers don't give you free IMAP. You are "paying" by giving away your private information but evidently, people prefer it to setting up their own mail servers.
"Rolling my own filtering" consists of placing a single mailbox_command line in the Postfix configuration file, it hardly qualifies as a time sink. Writing mail filters for procmail takes no more time than doing so in Gmail, the difference is that the former lets you write much more expressive and fine-grained rules.
And yes, SpamAssassin does have a built-in learning Bayesian classifier. Which I previously used to learn from anything that I manually classified as spam, but these days I don't even get any spam to invoke it on. See sa-learn(1) for details.