Wir haben ja schon einiges gegen SPAM in den Postfix-Einstellungen getan, später werden wir noch was auf Firewall-Basis einbauen, sodass SPAM-Schleudern keine Chance haben.
Jetzt gehen wir aber erstmal noch einen Schritt weiter und filtern unsere E-Mails nach Viren. Wenn man kein Windows einsetzt, ist man zwar sowieso relativ sicher im Bezug auf Viren, aber wir wollen sicher gehen, dass wir keine verschicken und auch keine per Mail einfangen. Wir nutzen auch hier eine kleinere Software und nicht das aufgeblasene Amavis. Für uns gibts ClamSMTP mit ClamAV als Scanner.
- Aktueller Portstree? Gut, dann installieren wir mal ClamSMTP:
# cd /usr/ports/security/clamsmtp/ && make install clean - Nun müssen wir die Datei '/usr/local/etc/postfix/main.cf' wieder bearbeiten. Folgende Zeile tragen wir ein:
content_filter = scan:[<MAIL-JAIL-IP>]:10025
Das bewirkt, dass die Mails an den Dienst "scan", der auf Port 10025 hört, weitergeleitet werden. Richtig, wir werden ClamSMTP so konfigurieren, dass er auf diesen Port hört.
<MAIL-JAIL-IP> natürlich wieder durch die IP deiner Mail-Jail ersetzen. - Jetzt müssen wir die Datei '/usr/local/etc/postfix/master.cf' bearbeiten, sodass der "scan"-Dienst konfiguriert ist. Folgende Zeilen musst dafür eintragen:
scan unix - - n - 16 smtp
Wie du hier schön siehst, werden wir keine erneuten Restrictions aufnehmen, da hier nur Mails ankommen, die diesen Test bereits bestanden haben. Denn warum sollten wir SPAM auf Viren prüfen?
-o smtp_send_xforward_command=yes
-o smtp_enforce_tls=no
<MAIL-JAIL-IP>:10026 inet n - n - 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,
no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks, reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=10.0.0.0/8 - Jetzt aktivieren wir die entsprechenden Dienste in der '/etc/rc.conf' (siehe auch: Viren- & Rootkitscanner):
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
clamsmtpd_enable="YES" - Nun noch die '/usr/local/etc/clamsmtp.conf' bearbeiten:
- OutAddress: <MAIL-JAIL-IP>:10026
- Listen: <MAIL-JAIL-IP>:10025
- ClamAddress: /var/run/clamav/clamd
- Header: X-Virus-Scanned: ClamAV using ClamSMTP
- TempDirectory: /tmp
- Action: drop
- Quarantine: off
- TransparentProxy: off
- User: clamav
Was die einzelnen Parameter bedeuten sollte halbwegs klar sein, Header, Action, Quarantine und TransparentProxy sind individuell einstellbar bzw. sind von deiner Server-Konfiguration abhängig. - Damit "clamd" starten kann, der ist erforderlich, müssen wir die Datei '/usr/local/etc/clamd.conf' noch bearbeiten, und zwar müssen wir das temporäre Verzeichnis festlegen:
TemporaryDirectory /tmp
- Jetzt können wir die einzelnen Dienste starten und den Mailserver neustarten:
# /usr/local/etc/rc.d/clamav-freshclam start
# /usr/local/etc/rc.d/clamav-clamd start
# /usr/local/etc/rc.d/clamsmtpd start
Hinweis: Eventuell kann es sinnvoll sein, freshclam einmal von Hand zu starten, um initial die neuesten Files herunterzuladen. Dafür einfach "freshclam" auf der Shell eingeben. - Jetzt noch einmal Postfix neustarten und die Konfiguration einlesen:
# postmap /usr/local/etc/postfix/main.cf
# postmap /usr/local/etc/postfix/master.cf
# /usr/local/etc/rc.d/postfix restart - Wenn jetzt alles glatt gelaufen ist, sollte in deinen E-Mails (ein- und ausgehend) im Header (meist über die Quelltextansicht sichtbar) "X-Virus-Scanned: ClamAV using ClamSMTP" stehen. Testen kannst du die Funktionalität beispielsweise von der Website www.testvirus.de.
Einen Kommentar hinzufügen
Wer lesen kann ist klar im Vorteil:
(Für E-Mails bitte die obere Adresse verwenden!)
;-)
Du solltest eingehende Mails nicht direkt an den Virenscanner weiterleiten. Leite in deinen PF-Regeln bitte jede E-Mail, ob in einer Whitelist oder nicht, erst an Postfix weiter. Wenn das der Fall ist sollte dein Problem behoben sein, falls du nicht noch irgendwo anders einen Fehler drin hast.
Probier das mal aus. Meine Mailadresse ist überigens die obere bei "Kontakt" und endet mit serverzeit.de :-)
Grüsse,
Benedikt
komm nicht durch zu dir :-(
Holla:
<[email protected]>:
92.51.129.253_does_not_like_recipient./Remote_host_said:_550_sorry,_no_mailbox_here_by_that_name._(#5.7.17)/Giving_up_on_92.51.129.253./
scheint als hättest Du auch ein kleines technisches Problem?? ;-)
Schick mir mal bitte ne Mail, dann klären wir das darüber. Hier ist es ungünstig.
Hallo Bene,
ich bin 1:1 nach deiner Anleitung vorgegangen.
Analog dazu habe ich auch noch ein paar andere Howtos ausprobiert.
Leider immer das selbe Spiel.
Das der Mailserver in dem Fall als Open Relay fungiert weiss ich ja und es erstaunt mich gleichermaßen, denn eigentlich sollte ja alle Postfix seitingen Sicherheitsovorkehrungen durch die diversen Reject Regeln in der main.cf getroffen sein.
Mein Mailserver hat die IP: 127.0.10.10
Webserver: 127.0.20.10 und so weiter.
Was gibt es denn für eine andere Möglichkeit das Masterinterface (Gateway also an dem wo die echte Internet IP gebunden ist) an die Jail und den Eingangsport für den Empfang der MAils weitergibt?
Meine RDR Pass Regeln schauen folgendermaßen aus:
rdr pass on $if_ext proto tcp from <spamd-mywhite> to $if_ext port 25 -> $mail_ip port 10026
rdr pass on $if_ext proto tcp from <spamd-white> to $if_ext port 25 -> $mail_ip port 10026
rdr pass on $if_ext proto tcp from !<spamd-white> to $if_ext port 25 -> 127.0.0.1 port spamd
Hallo Jules,
Bist du nach meiner Anleitung vorgegangen? Denn dann dürfte das Versenden nur über die eigenen Domains möglich sein.
Such mal nach "Open relay test" und mache einen solchen Test. Dann zeigt er dir auf, welche Art von Mails versendet werden dürfen und wo du ansetzen musst.
Bei pf solltest du keine RDR PASS Regel verwenden. Wenn du als IP-Netz der Jails bspw. 192.168.0.0/32 verwendest, solltest du eingehende Anfragen auf deinem Netzinterface grundsätzlich blocken. Dann können deine Jails weiterhin ohne Authentifizierung über deinen SMTP senden.
Weiters gilt, dass du nur E-Mails zum Versenden annehmen darfst, wenn der Benutzer sich authentifiziert hat. Wie das geht ist in meinem Tutorial ja beschrieben (wenn auch nicht explizit).
Dein Server, zumindest was die Meldungen angeht, fungiert als open Relay und das darf nicht sein! Du solltest dich schleunigst an die Konfiguration machen und solange den Versand von Mails darüber verbieten (Port 25 schliessen).
Grüsse und frohe Ostern,
Benedikt
Nach dem jetzt alles so konfiguriert wurde wie hier beschrieben erhalte ich sehr viele negative Aktivitäten von aussen die versuchen meinen Postfix Daemon als Relay über spoofed Mailadresse zu verschicken sh. Beispiel aus dem Log:
Apr 7 23:31:08 mail postfix/smtpd[3188]: 918E3206A: client=mail[127.0.20.10]
Apr 7 23:31:15 mail postfix/cleanup[3192]: 918E3206A: message-id=<[email protected]>
Apr 7 23:31:15 mail clamsmtpd: 100000: from=[email protected], to=[email protected], to=[email protected], to=[email protected], to=[email protected], to=[email protected]
Apr 7 23:31:15 mail postfix/qmgr[1917]: 918E3206A: from=<[email protected]>, size=1421, nrcpt=17 (queue active)
Apr 7 23:31:15 mail postfix/smtpd[3188]: disconnect from mail[127.0.20.10]
Apr 7 23:31:15 mail postfix/smtp[3194]: 918E3206A: to=<[email protected]>, relay=none, delay=7.3, delays=6.8/0.14/0.31/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error f
Apr 7 23:31:15 mail postfix/smtp[3193]: 918E3206A: to=<[email protected]>, relay=none, delay=7.3, delays=6.8/0.12/0.33/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service
Apr 7 23:31:15 mail postfix/smtp[3193]: 918E3206A: to=<[email protected]>, relay=none, delay=7.7, delays=6.8/0.48/0.36/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for n
Apr 7 23:31:15 mail postfix/smtp[3196]: 918E3206A: to=<[email protected]>, relay=none, delay=7.8, delays=6.8/0.25/0.66/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for
Apr 7 23:31:16 mail postfix/smtp[3195]: 918E3206A: to=<[email protected]>, relay=none, delay=8, delays=6.8/0.24/0.96/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for
Apr 7 23:31:18 mail postfix/smtp[3208]: 918E3206A: to=<[email protected]>, relay=mx2.mail.tw.yahoo.com[203.188.197.10]:25, delay=10, delays=6.8/0.57/1.2/1.4, dsn=2.0.0, status=sent (250 ok dirdel 1/1)
Apr 7 23:31:18 mail postfix/smtp[3208]: 918E3206A: to=<[email protected]>, relay=mx2.mail.tw.yahoo.com[203.188.197.10]:25, delay=10, delays=6.8/0.57/1.2/1.4, dsn=2.0.0, status=sent (250 ok dirdel 1/1)
Ich nutze Postfix + Dovecot + clamav/clamd in einer Mailjail + Postfixadmin auf Webserverjail + eigene MySQL Jail.
Auf dem Hostsystem ist Spamd installiert welcher eigentlich schon sehr viel abfängt.
Wie kann ich verhinder dass es Grundsätzlich nicht gestattet ist Mails über meinen Mailserver von Fremd Mailadresse an Fremdmailadresse zu verschicken.
Erlaubte Konstelation sollte sein:
Erlaube eingehend Mails von jeder beliebigen Mailadresse an meine @meinemaildomain.de
Erlaube ausgehende Mails von allen eigenen Mailadressen (*@meinermaildomain.de) zu beliebiger Mailadresse.
Sprich er soll nur dann beliefern dürfen wenn die Domain auch tatsächlich auf meinem Server registriert ist und nur von der Adresse aus die es auf meinem Mailserver auch wirklich gibt.
Am besten wäre wohl den Relay komplett auszuschalten und nur wer sich mit Login / Passwort über SSL über IMAP einloggt darf auch verschicken, alles andere wird geblockt.
Und eingehend nur gestatten meine registrierten Domains zu beliefern.
Leider habe ich schon seit Tagen das Internet durchforstet und sämtliche Konfigurationen ausprobiert um dieses Ziel zu erreichen. Bisher leider ohne erfolg.
Kann es auch daran liegen wie die PF Firewall eingerichtet ist??
Sprich ich habe ja eine RDR Pass regel auf das Mailjail. Interner Verkehr ist ja über die mynetworks konfiguration uneingeschränkt erlaubt. Wenn jetzt von aussen was zur Jail eingeht, schnappt er sich dann die IP des Zielhost und erkennt so garnicht, dass die Verbindung eigentlich von einer anderen IP herkommt?