Mooi. So far, so good.
Laten we die ipchains en iptables maar even voor wat het is. Dat was de vraag niet, dus nu maar een wat meer
to the point antwoord:
De mail komt binnen op port 25, en wordt door de smtpd opgehaald naar de mailserver.
We laten de firewall voor wat het is, want de mail zou ook dmv de qmqpd [SIZE=-2](quick mail queueing protocol deamon)[/SIZE] opgevangen kunnen worden. Dan moet je daar de rules ook aanpassen. Ook al is die deamon niet veel meer in gebruik. Je hebt niet voor niets een mailprogramma die de controles hoort te doen, De vraagstelling is dus volkomen correct, BT.
Ik weet dat je sendmail gebruikt, maar toch ga ik er op in voor het Postfix programma. Uiteindelijkgaat het om de theorie wat er hoort te gebeuren. En mocht je willen migreren naar Postfix, is dat niet een groot probleem. Postfix reageert op de sendmail commando's. Daarnaast is Postfix veiliger, efficienter (en dus veel sneller) en stukken gebruikersvriendelijker.
De smtpd vangt de mail dus op van het internet. Mooi, dat werkt prima. Vervolgens gaat het door de cleanup, om de mailtjes te fatsoeneren. Veel mailtjes zijn niet helemaal hoe ze horen te zijn, en het puin wordt daar opgeruimd. De mailtjes komen dan in de (inkoming) queue. Daarna gaat de queue manager (qmgr) aan het werk, om de mail op de juiste plaats te bezorgen. Je imap server of wat dan ook. Het bezorgen kan local, smtp, pipe, lmtp of virtual gebeuren.
Mogelijk moet je ergens de ingekomen mail gaan filteren. Er zijn twee plaatsen waar gefiterd kan worden: Before queue en After queue.
- Bij after queue wordt de mail binnengehaald en later via de qmgr door je filters gehaald.
- Bij before queue vordt de mail bij binnenkomst, dus nog voor je cleanup door een filter gehaald.
Aan het filter kunnen meteen je
SpamAssassin en
Kaspersky virusscanner aan vast zitten. (Beiden sterk aanbevolen in de UNIX wereld!)
En nu gaan we wat voorbeeldjes van mogelijkheden in een smtp pakketjes bekijken, om te zien waarom before queue filtering veel beter is, maar ook of dat iets oplost:
[SIZE=-2](Bron: Edwin Cremer, Tunix, Sane 2004 Tutorial Notes)[/SIZE]
Geel = server
Wit = verzender
Code:
[u][b]SMTP STAGES RULES [/b][/u]
[color=yellow]{SMTP server accepts a connection}[/color] [SIZE=-1]smtpd_client_restrictions[/SIZE]
[color=yellow]220 mail.xinu.nl ESMTP Postfix[/color]
Helo mail.myserver.nl [SIZE=-1]smtpd_helo_restrictions[/SIZE]
[color=yellow]250 mail.xinu.nl[/color]
MAIL FROM:<myself@myserver.nl> [SIZE=-1]smtpd_sender_restrictions[/SIZE]
[color=yellow]250 Ok[/color]
RCPT TO:<foobar@example.net> [SIZE=-1]smtpd_recipient_restrictions[/SIZE]
[color=yellow]554 <foobar@example.net>: Relay access denied[/color]
RCPT TO:<devnull@xinu.nl>
[color=yellow]250 Ok[/color]
DATA [SIZE=-1]smtpd_data_restrictions[/SIZE]
[color=yellow]354 End data with <CR><LF>.<CR><LF>[/color]
Oh well, forget about it...
. [SIZE=-1]<--- before-queue filters come into play here[/SIZE]
[color=yellow]250 Ok: queued as 0109BA96B[/color]
QUIT
[color=yellow]221 Bye[/color]
Vanaf het moment dat de code 250 Ok is gegeven, ben je zelf verantwoordelijk voor de mail. Daarvoor de verzender. Dus als je voor dat moment de boel gescand hebt en rejected, hoef je (volgens de RFC standards) geen bericht terug te sturen. En mag je het droppen. Net zoals je post van de postbode weigert aan te nemen. Neem je de post wel aan, en vind je het verdacht (die grote bruine envelop), dan hoor je het niet zomaar in de vuilnis te gooien. De naam van je vrouw kan er op staan, en dan moet je er toch iets mee... En ik neem aan dat je er niet om staat te springen spammers te laten weten dat je inderdaad een mailserver hebt draaien. (In dit geval door een boodschap terug te sturen dat je hun post in de vuilnisbak gegooid hebt. Dus kan je beter before queue filtering doen.)
Dus: als de mail voldoet aan alle restricties, is het de kunst deze daarna te filteren op spam en virussen en wat-dan-ook-meer. Maar: in jouw geval blijkt dat de mail niet aan de restricties voldoet: Er wordt mail bij je bezorgd die naar een ander adres dan jouw netwerk moet. En je bent geen open-relay. Dus de mail wordt al
voor je filters gedropt door de smtpd_recipient_restrictions.
Zo hoort het. Niets aan doen dus.