I have an SMTP server that mostly just accepts mail (sends very little
email out), and I want to write Perl/PHP scripts (not C code!) to
control every step of a remote connection. At each step, I want the
option to tempfail/permfail the email or even drop the connection
entirely. Examples:
Even before the sender says "HELO", I want the ability to return stuff like:
550 You're on an RBL. Go away.
450 Your IP address is already sending me mail. Try again later.
[drop the connection silently w/ no message; prevents DOS attacks]
[do nothing at all; let the sender go to the next step]
After the sender says HELO, I might do:
550 Your HELO is *my* server? I don't think so!
450 HELO doesn't match domain, but if you connect twice more, I'll let you in
250 Hello, [ip address], how's it going?
[in the 2nd case, I'd keep track of the senders HELO/IP combination
somewhere, so I could ok them if they connected twice more]
Same sort of thing after I get "MAIL FROM" (maybe I don't like certain
senders) and each "RCPT TO" (I may graylist certain recipient-sender
combinations).
Finally, I want the ability to call an arbitrary Perl/PHP script after
the DATA is sent (maybe run it through spamassassin)
Basically, I'm looking for an SMTP server w/ lots of "hooks"--
something that works well out of the box, but something I can also
tweak easily if I want.
I don't like the options I have so far:
1. Use sendmail and milter (requires coding in C, ugly macros, and
hard to understand)
2. Write my own SMTP server (don't want to re-invent the wheel, even
though the RFC doesn't seem THAT bad)
What's the best SMTP server for my purposes?
And, yes, I realize some of my examples above are lousy-- I'm looking
for a solid foundation SMTP server to experiment with, not planning to
use on a production system.
--
We're just a Bunch Of Regular Guys, a collective group that's trying
to understand and assimilate technology. We feel that resistance to
new ideas and technology is unwise and ultimately futile.