Sorry moe but yes, just yes. It's rock solid, battle hardened, has a fantastic security record, is extremely resource efficient, has gobs of up to date and useful documentation, an active mailing list, a primary author who's stuck with it since conception (unlike DJB) and offers enough flexibility to reliably support virtually any mail setup you care to dream up.
I can't see why in the world anyone would advocate throwing all of that in the bin and adopting something new, flashy and unproven that happens to be written in go/rust/node/other language du jour? I mean why? So we can write configs in JSON and get a 'free batteries included' web management console for monitoring queue lengths?
So we can write configs in JSON and get a 'free batteries included' web management console for monitoring queue lengths?
Yes. Exactly that.
Postfix requires the user to understand pretty much all of its delicate (and often very much ass-backwards) abstractions at once, to accomplish even the most trivial tasks.
Aliases vs virt aliases, transports, the six dozen magic interactions of $mydestination, $myorigin etc. with one another and everything else, ... don't even get me started...
Nothing is easy in postfix. Everything is deeply entangled, counter-intuitive and error-prone. And there is absolutely no reason it has to be that way.
See what elasticsearch did for FTS. This is how software is designed today.
I'm not bashing Postfix, it's still a workhorse. But let's not be sentimental about software. Being better than sendmail simply is no longer the big deal that it was in 1998.
Today I expect my MTA to be all that postfix is, and easy to use.
It's interesting that you brought up ES actually as I've just been toying with it as part of a project I'm working on (I usually use Solr). Unfortunately, I hated it so I guess we just have very different views on what constitutes a good approach to software.
Things I didn't like with ES include:
- Awful documentation (even the newly released guide) and too much marketing speak. I constantly felt like I was reading a brochure rather than a man page.
- I found it opaque and difficult to get clear, concise info on how it's put together and what it's doing under the hood.
- Marvel was nice but it's a shame they charge for it (it's not _that_ nice)
- The install routine (in an effort to be super simple I guess) just felt wrong and needlessly over simplified (I didn't like it making decisions without telling me what it was doing).
And more...
I will concede that working with ES's config files is a lot nicer than dealing with Solr's XML though! And in case you're in any doubt, I am by no means an enormous Solr fan either.
Anyway looks like we'll just have to agree to disagree on this one :)
Edit: also, I am occasionally prone to a bit of sentimentality for good, older software (it took me far too long to give up on apache and embrace nginx for example) - so there's definitely a little bias on my part!
Edit 2: If you could get Salvatore Sanfilippo and Igor Sysoev to team up and build a modern MTA, that would interest me :D
Now that's an interesting comment, thanks for that.
I'll probably come across as arrogant now (sorry), but your critique of ES sounds almost ironic to me.
It's especially curious as you do claim experience with SOLR. Have you ever scaled it beyond a single core?
I'll go on a limb and claim that most of what you perceive as opaque in ES is likely magic that actually works. The rarest kind.
Yes, Marvel is not optional to run a meaningfully sized cluster. But where is Marvel for SOLR again? Where is automatic clustering and balancing? Oh, it doesn't exist?
Sure ES isn't perfect. But it's one generation ahead of SOLR. And Postfix is one generation behind SOLR. That's all I'm saying.
I can't see why in the world anyone would advocate throwing all of that in the bin and adopting something new, flashy and unproven that happens to be written in go/rust/node/other language du jour? I mean why? So we can write configs in JSON and get a 'free batteries included' web management console for monitoring queue lengths?