Postfix akzeptiert Mails an alle lokalen User - wie verhindern?

Status
Für weitere Antworten geschlossen.

MasterSam

Benutzer
Mitglied seit
26. Dez 2012
Beiträge
49
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich poste das mal hier, da es für "Mail Server" kein eigenes Forum gibt und die Frage mit Zarafa, das die Mails später bekommt, nichts zu tun hat.

Ich habe also das Paket "Mail Server" installiert und Postfix für den Mail-Empfang konfiguriert. Als mailbox_transport kommt wie erwähnt Zarafa zum Einsatz, aber das nur am Rande, mein Problem ist woanders gelagert: Postfix akzeptiert alle lokalen User als Empfänger. Zur Illustration ein Beispiel (an der Stelle von myhostname steht natürlich normalerweise der FQDN):
Rich (BBCode):
220 myhostname ESMTP Postfix
HELO gmx.de
250 myhostname
MAIL FROM:user@gmx.de
250 2.1.0 Ok
RCPT TO:nobody@myhostname
250 2.1.5 Ok

Ich nutze die Einstellung local_recipient_maps, das funktioniert auch soweit, d.h. Mails an völlig unbekannte Absender werden abgelehnt:
Rich (BBCode):
220 myhostname ESMTP Postfix
HELO gmx.de
250 myhostname
MAIL FROM:user@gmx.de
250 2.1.0 Ok
RCPT TO:1234@myhostname
550 5.1.1 <1234@myhostname>: Recipient address rejected: User unknown in local recipient table

Das Problem ist also, dass Postfix an alle lokalen User *und* an alle in der local_recipient_maps aufgeführten Tabelle akzeptiert. Ich möchte aber, dass als Empfänger *nur* die Nutzer in der local_recipient_maps akzeptiert werden, da die Zarafa-Konten nicht mit den lokalen Konten zusammenfallen und man durch Senden von Mail an nobody@myhostname oder guest@myhostname oder admin@myhostname wunderbaren Backscatter-Spam erzeugen kann :(

Als Holzhammer-Methode habe ich schon gefunden, dass man über die Prüfung check_recipient_access in den smtpd_recipient_restrictions diese Nutzer "blacklisten" könnte. Das widerstrebt mir aber, da man dann beim Anlegen eines lokalen Nutzers daran denken müsste ihn der Blacklist hinzuzufügen. Daher würde ich gerne einzig die local_recipient_maps als Whitelist verwenden.

Ich hoffe, dass ihr mir einen Tipp geben könnt und Danke für eure Mühe :)

vg, Johannes
 

MasterSam

Benutzer
Mitglied seit
26. Dez 2012
Beiträge
49
Punkte für Reaktionen
0
Punkte
0
Ich habe versucht die Konfiguration auf virtuelle User umzubiegen, aber selbst dann werden die lokalen Benutzer noch akzeptiert. Ich würde mich sehr freuen, falls mal jemand bei sich testen könnte ob nobody@... oder postfix@... von Postfix als Recipient akzeptiert werden, obwohl es sich um Systemaccounts handelt, die eigentlich gar keine Mails empfangen sollen?

vg, Johannes
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
das ist das Problem mit lokalen Usern, grundsätzlich kann jeder mit Home und Shell auch Mails empfangen. Virtuelle User würden das Problem lösen. Wenn trotzdem noch Post für die Accounts abgenommen wird, dann hast du einen Fehler gemacht ;-)
Das mit der Whitelist müsste aber auch gehen
Code:
smtpd_recipient_restrictions =
                                                check_recipient_access=hash:/pfad/deine/map,
                                                reject
trag in map deine Whitelist User ein und es sollte klappen
 

MasterSam

Benutzer
Mitglied seit
26. Dez 2012
Beiträge
49
Punkte für Reaktionen
0
Punkte
0
Vielen Dank für deine Antwort, das hat mich auf den richtigen Weg geführt (ich bin wieder auf die ursprünglich vorhandene Konfiguration ohne virtuelle User zurück, möglich dass ich dort irgendwo einen Fehler reingebracht habe). Leider schreibt der MailServer bei jedem Neustart (im Paketzentrum oder bei Neustart der DS) die smtpd_recipient_restrictions bei Erstellung der main.cf neu, sodass eine Einstellung in der main.template ignoriert wird.
Man könnte das Skript /var/packages/MailServer/target/scripts/DaemonConfSet.sh patchen, dann überlebt die Einstellung auch einen Neustart - sollte man das nach einem Update des Pakets mal vergessen steht man aber wieder ohne Abweisung da.

Ich habe mich dann am Ende dafür entschieden doch das zu tun, was ich ursprünglich vermeiden wollte, nämlich eine Blacklist zu nutzen. Und zwar aus dem Grund, dass Synology die Funktion von Haus aus anbietet und die Blacklist daher mutmaßlich auch Paketupdates überlebt. Ich habe alle User in eine Datei schreiben lassen:
Code:
for account in $(cut -d: -f1 /etc/passwd | grep -v master$); do echo "${account}@myhostname REJECT" >> /volume2/temp/blocked_recipients; done
dann die erzeugte Datei über die Weboberfläche importiert (E-Mail-Server -> Sicherheit -> Black- und Whitelist -> Extras -> Empfängerregeln importieren) und die erwünschten User gelöscht. Nachteil ist ganz klar, dass man nach dem Anlegen neuer User oder der Installation neuer Dienste, für die Daemon-User angelegt werden, nacharbeiten muss. Kommt bei mir nicht so oft vor, ich hoffe dass es mir gelingt die Liste aktuell zu halten.

Synology generiert bei jedem Neustart des MailServers die Map unter /var/packages/MailServer/target/etc/access/recipient_access, die in den smtpd_recipient_restrictions eingebaut ist: ..., check_recipient_access hash:/var/packages/MailServer/target/etc/access/recipient_access, ...

Die Ablehnung erfolgt mit der Meldung "Recipient address rejected: Access denied". Den Ablehnungsgrund könnte man in die Map schreiben, Synology hat das Feature aber nicht umgesetzt. Man könnte das Skript /var/packages/MailServer/scripts/start-stop-status patchen, muss das allerdings mutmaßlich nach jedem Paket-Update wiederholen (wenn man das vergisst ist es aber weniger dramatisch, da die Mails immer noch abgelehnt werden, nur eben mit einer irreführenden Fehlermeldung).
Code:
--- start-stop-status.org
+++ start-stop-status
@@ -208,6 +208,10 @@
 	${PRIVATE_LOCATION}/bin/syno_bcc_map
 	${PRIVATE_LOCATION}/bin/syno_spam_blackwhite
 
+        # add error message for unknown users, otherwise postfix uses access denied
+        sed 's/$/ Unknown User/g' -i ${PRIVATE_LOCATION}/etc/access/recipient_access
+        ${PRIVATE_LOCATION}/sbin/postmap ${PRIVATE_LOCATION}/etc/access/recipient_access
+
 	# start mail server
 	# if service is enable, start daemon
 	SmtpEnable=`/bin/get_key_value $MAILCONF smtp_enabled`

Damit wird nach Erstellung der map jeder Zeile der String " Unknown User" angehängt und Postfix lehnt dann die Mails an diese Empfänger mit "Recipient address rejected: Unknown User" ab.

Ich hoffe ich habe keinen Fehler eingebaut...

vg, Johannes
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat 

 
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten. Dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit hohem technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive Werbung und bemühen uns um eine dezente Integration.

Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.

Du kannst uns auch über unseren Kaffeautomat einen Kaffe ausgeben oder ein PUR Abo abschließen und das Forum so werbefrei nutzen.

Vielen Dank für Deine Unterstützung!