Server verschickt bei valider Absenderadresse alles über Telnet

act

New Member
Hallo,

bin relativ neu was Postfix angeht, aber im Grunde habe ich das System gut im Griff. Jetzt ist mir nur eine Sache aufgefallen, wo ich direkt mal Bauchschmerzen bekam.

Alle Relay-Tests von Mail relay testing schlagen fehl, was gut ist, aber wenn ich mich über telnet auf port 25 konnektiere und irgendeine valide Absender-Emailadresse eintrage, kann ich an beliebige Emailadressen Nachrichten senden. Das ist natürlich ein Super-GAU.

Der Server wird von 20 Accounts/Emailadressen aus verschiedenen Ländern benutzt sowie von einer Internetwebsite für den normalen Mailversand bei Kundenregistrierung, etc. Die 20 Accounts müssen sich mit dem Mailprogramm via TLS und Passwort authentifizieren, was auch wunderbar funktioniert.

Meine Newbie-Frage: Warum kann man aber ohne irgendein Kennwort über Telnet dennoch Mails versenden bzw wie kann ich das denn verhindern dass telnet diese Mails ohne Authentifizierung entgegennimmt?

Viele dank für eure Hilfe
-act
 
Deine User müssen sich zum Abrufen der Mails anmelden, aber anscheinend nicht zum Versenden.

SMTP-AUTH ist das Stichwort. Ausnahmen gibt es nicht, wenn du dich per Telnet verbinden und Mails verschicken kannst, dann kann man das auch mit jedem Mailprogramm.

Hast du vielleicht die Reihenfolge in den Einschränkungen unglücklich gewählt? Zeige uns doch mal deine main.cf und master.cf (in [ code]-Tags bitte).
 
Meine Newbie-Frage: Warum kann man aber ohne irgendein Kennwort über Telnet dennoch Mails versenden bzw wie kann ich das denn verhindern dass telnet diese Mails ohne Authentifizierung entgegennimmt?
Hast du den Test vielleicht von dem Server aus ausgeführt, auf dem auch der MTA läuft (Stichwort $mynetworks)? Waren die Adressen, an die du deine E-Mails geschickt hast, vielleicht alle auf dem Server gehostet (Stichwort $mydestination)?

Ansonsten: Poste die Ausgabe von `postconf -n`.
 
Hi!

Erstmal danke für die Anworten.

@RogerWilco: Nein, Telnet wurde von einem anderen Rechner ausgeführt und die Zieladressen waren keine lokalen auf dem Mailserver.

@Ben, was du sagst klingt einleuchend. Hier mal meine postconf, wo ich direkt eine Sache sehe, und zwar steht da smtp_sasl_auth_enable auf "no", könnte es das schon sein oder ist es eine Kombination aus mehreren Variablen?

Code:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
home_mailbox = mails/
inet_interfaces = all
local_recipient_maps = 
mailbox_size_limit = 0
message_size_limit = 20480000
mydestination = meinedomain.de, localhost, $myhostname
mydomain = meinedomain.de
myhostname = betamail.meinedomain.de
mynetworks = 127.0.0.0/8, xx.xx.xxx.0/24
myorigin = /etc/mailname
recipient_delimiter = +
relay_domains = $mydestination, mysql:/etc/postfix/relay_domains.mysql
relayhost = 
smtp_helo_name = mail.meinedomain.de
smtp_sasl_auth_enable = no
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_enforce_tls = no
smtpd_helo_required = yes
smtpd_helo_restrictions = reject_invalid_hostname
smtpd_recipient_restrictions = 
	check_recipient_access mysql:/etc/postfix/access_recipient_rfc.mysql,        
	check_client_access mysql:/etc/postfix/access_client.mysql,        
	check_helo_access mysql:/etc/postfix/access_helo.mysql,        
	check_sender_access mysql:/etc/postfix/access_sender.mysql,        
	check_recipient_access mysql:/etc/postfix/access_recipient.mysql,        
	reject_non_fqdn_sender,        
	reject_non_fqdn_recipient,        
	reject_unknown_sender_domain,        
	reject_unknown_recipient_domain,        
	permit_sasl_authenticated,        
	reject_rbl_client zen.spamhaus.org,        
	reject_rbl_client ix.dnsbl.manitu.net,        
	reject_rbl_client bl.spamcop.net,        
	reject_rbl_client dnsbl.njabl.org,        
	reject_rbl_client list.dsbl.org,        
	reject_rhsbl_client zen.spamhaus.org,        
	check_policy_service inet:127.0.0.1:12525,        
	check_policy_service inet:127.0.0.1:60000,        
	reject_unverified_recipient,       
	reject_unauth_destination,        
	permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = 
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/postfix/mail.cert
smtpd_tls_key_file = /etc/postfix/mail.key
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtpd_use_tls = yes
transport_maps = mysql:/etc/postfix/relay_transport.mysql
unknown_local_recipient_reject_code = 450

Habe eben mal den Wert auf für smtp_sasl_auth_enable "yes" gesetzt, hatte dann beim Sendeversuch via Telnet keinen Error, die Mail wurde aber auch nicht verschickt, dafür hatte ich im mail.log folgenden Eintrag:

May 8 20:09:20 betamail postfix/smtp[5192]: fatal: specify a password table via the `smtp_sasl_password_maps' configuration parameter
May 8 20:09:21 betamail postfix/master[1353]: warning: process /usr/lib/postfix/smtp pid 5192 exit status 1
May 8 20:09:21 betamail postfix/master[1353]: warning: /usr/lib/postfix/smtp: bad command startup -- throttling

Verstehe ich das richtig dass ich zu jedem Client nochmals irgendwo username/passwort hinterlegen muss? Funktioniert das nicht so, dass das identisch ist zu dem Login der beim Mailabruf verwendet wird?

Grüße
-act
 
Die Optionen smtp_* betreffen den SMTP-Client von Postfix, die Optionen smtpd_* den SMTP-Server.

Welche Einträge schreibt Postfix in das Mail Log, wenn du eine E-Mail ohne vorherige Authentifizierung verschickst?

EDIT: Ich vermute die Zeile
Code:
	check_sender_access mysql:/etc/postfix/access_sender.mysql,
in deinen smtpd_recipient_restrictions bzw. deren Position ist das Problem. Wenn da permit zurückgeliefert wird, wird die E-Mail angenommen, auch wenn der Empfänger nicht auf deinem System liegt.
 
Last edited by a moderator:
Hallo!

Ja, in der MySQL-Tabelle die in check_sender_access abgefragt wird, habe ich alle lokalen Emailaccounts drin mit dem Schlüsselwort OK, sprich, von meinem Verständnis her soll das bedeuten, dass diese Emailaccounts Mails "nach außen" verschicken dürfen.

Jetzt sehe ich natürlich auch das Problem, da das ganz oben steht, dass diese Emails einfach "durchgewunken" werden, nur war ich natürlich der Ansicht das vorab Authentiziert wird über Login/Passwort. Welche smtpd_recipient_restrictions ist denn dafür verantwortlich dass das passiert, bzw muss ich ein anderes Schlüsselwort in die check_sender_access-Liste eintragen, damit das vorab erfolgt?

Grüße
-act

PS Der Vollständigkeithalber das Log wenn über Telnet eine Mail nach Extern verschickt wird wenn der Absendername ein lokaler Emailaccount aus der sender_access-tabelle ist. Die Mail wird wie oben beschrieben einfach durchgewunken - was ja nun Sinn macht. Frage bleibt: Stimmt die Positionierung nicht? Muss ich eine main.cf Option noch irgendwo aktivieren damit das Relaying für diese lokalen Emailadressen nur nach Authentifizierung funktioniert?

Code:
May  9 06:10:27 betamail postfix/qmgr[1360]: 9210554458: from=<[email protected]>, size=383, nrcpt=1 (queue active)
May  9 06:10:28 betamail postfix/smtp[2310]: 9210554458: to=<[email protected]>, relay=aspmx.l.google.com[209.85.218.49]:25, delay=14, delays=13/0.01/0.24/0.66, dsn=2.0.0, status=sent (250 2.0.0 OK 1241841457 1si1316779bwz.80)
May  9 06:10:28 betamail postfix/qmgr[1360]: 9210554458: removed
 
Last edited by a moderator:
ich glaube ich hab's jetzt gelöst. Ich beginne die Restrictions jetzt folgendermassen:

permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_recipient_access mysql:/etc/postfix/access_recipient_rfc.mysql,

Jetzt sehe ich in Telnet:
Code:
220 betamail.meinedomain.deESMTP Postfix (Debian/GNU)
helo localhost  
250 betamail.meinedomain.de
MAIL FROM:[email protected]
R250 2.1.0 Ok
RCPT TO: [email protected]
554 5.7.1 <[email protected]>: Relay access denied

Und über die Emailclients funktioniert der Versand weiterhin wie gehabt, offensichtlich war dort schon alles korrekt eingestellt.

Ich hoffe das war's jetzt. Danke aber für die Hilfe hier, die mich (potentiell9auf den wichtigen Weg brachte.

-act
 
Zu früh gefreut. Jetzt habe ich das Problem das Outlook 2003-Nutzer keine Mails verschicken können (Outlook 2007, Apple Mail, Server etc lief problemlos ohne dass man was ändern musste in der Konfiguration).

Offensichtlich authentiziert sich Outlook 2003 nicht korrekt obwohl dies so eingestellt ist: Fehlermeldung 550 5.7.1 Relay access denied. Die Einstellungen bei dem User auf Outlook 2003 habe ich doppelt und dreifach kontrolliert, da scheint alles korrekt zu sein...

Kennt jemand dieses Problem mit dem Client?

Grüße
-act
 
Back
Top