# Postfix versendet interne Mails ohne Auth



## laqup (23. Okt. 2010)

Hallo,

vor einiger Zeit habe ich meinen Debian-Server nach dem Perfect Server Guide eingerichtet und mit ISPConfig 3.0.1 verwaltet. Im Prinzip funktioniert auch alles ganz wunderbar, aber durch Zufall habe ich nun entdeckt, dass interne Mails ohne Auth verschickt werden können.

Ich habe mehrere Domains, eine lautet beispielsweise xyz.de die andere 123.de. Wenn ich nun von meinem PC aus eine E-Mail von x@xyz.de an 1@123.de schicke, wird kein Login benötigt. Mails an externe Adressen werden dagegen nur mit gültigem Login verschickt. Wie kann ich dieses Verhalten ändern, so dass immer ein gültiger Login benötigt wird?

Hier der Inhalt meiner main.cf (Domainnamen geändert):

```
# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = /usr/share/doc/postfix

# TLS parameters
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = srv.xyz.de
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = srv.xyz.de, localhost, localhost.localdomain
relayhost = 
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
virtual_alias_domains = 
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /var/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination
smtpd_tls_security_level = may
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
relay_domains = mysql:/etc/postfix/mysql-virtual_relaydomains.cf
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "The user you are trying to reach is over quota."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf
smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1
virtual_transport = maildrop
header_checks = regexp:/etc/postfix/header_checks
mime_header_checks = regexp:/etc/postfix/mime_header_checks
nested_header_checks = regexp:/etc/postfix/nested_header_checks
body_checks = regexp:/etc/postfix/body_checks
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
message_size_limit = 0
```
Vielen Dank im Voraus!

Grüße,
Daniel


----------



## Till (24. Okt. 2010)

> Ich habe mehrere Domains, eine lautet beispielsweise xyz.de die andere 123.de. Wenn ich nun von meinem PC aus eine E-Mail von x@xyz.de an 1@123.de schicke, wird kein Login benötigt. Mails an externe Adressen werden dagegen nur mit gültigem Login verschickt. Wie kann ich dieses Verhalten ändern, so dass immer ein gültiger Login benötigt wird?


Das ist ja auch ganz richtig so, sonst würde Dein Mailserver nicht mehr funktionieren oder Du müsstest jedem der Dir irgendwann mal eine Mail schicken will vorher eine Postkarte mit Deinem Passwort schicken  Jeder Emailserver nimmt Emails für seine lokalen Domains ohne Passwort an.


----------



## laqup (24. Okt. 2010)

Hm das ist aber ein Problem so wie ich das sehe. Immerhin kann sich jetzt jeder und zwar wirklich jeder einfach ein E-Mail-Konto mit z.B. der Mail x@xyz.de erstellen und ohne Auth Spam-Mails an 1@123.de senden.
Ist das wirklich so gewünscht?


----------



## Till (25. Okt. 2010)

Nein, das kann er eben nicht. Du bringst hier etwas ganz grundlegendes durcheinander. Dein Problem hat mit dem Versenden nichts zu tun, es geht hier um das empfangen. Ein Emailkonto empfängt immer alle an diese Adresse adressierten Emails. Welche Absenderadresse da verwendet wird spielt keine Rolle, da eine Verifizierung der Absenderadresse in den Email RFC nicht vorgesehen ist. Das ist wie im echten Leben, Du musst ja vor dem einwerfen eines Briefes in den Briefkasten auch nicht Deinen Ausweis vorzeigen um nachzuweisen das Du auch wirklich der Absender des Briefes bist.

Wenn Du die über die detaillierte Funktionsweise des Emailsystems im Internet interessierst, dann schau Dir doch mal die RFC's an.

http://www.faqs.org/rfcs/


----------



## laqup (25. Okt. 2010)

Kann er eben doch. Und das ist doch mein großes Problem, ich habe es doch getestet. Ich glaube wir reden aneinander vorbei.

Ich kann auf einem X-beliebigem Computer mit einem X-beliebigem Mailclient einfach ein Konto mit z.B. der Mail x@xyz.de anlegen und mit diesem Konto ohne Zugangsdaten Mails verschicken, allerdings nur an andere interne Mailadressen meines Servers, an extern nicht. Aber selbst das erscheint mir fragwürdig. Abrufen ohne Auth geht dagegen natürlich nicht.

Mein Server überprüft beim Senden einer Mail von einer internen Adresse an eine andere interne Adresse nicht, ob derjenige der gerade sendet überhaupt die richtigen Zugangsdaten für die Mail mit der er senden möchte hat.

Anderes Beispiel: Ich kann ja auch nicht von einer beliebigen z.B. gmx-Adresse an die andere gmx-Adresse ohne Login-Daten einfach eine Mail schicken. Genau das geht aber mit "meinen" Mailadressen.

Ich hoffe ich jetzt ist klar was ich meine.


----------



## Till (26. Okt. 2010)

Ich verstehe was Du meinst und habe es auch bereits beantwortet und das aktuelle Verhalten Deines Servers entspricht dem normalen Verhalten von Emailservern im Internet. Da Du mir das aber eh nicht glaubst, lass es Dir doch mal von jemand anderem erklären oder leis die RFC selbst.


----------



## mascoxx (26. Okt. 2010)

Hi!

Ich versuche jetzt mal laqup etwas unter die Arme zu greifen, da ich dieses Problem kenne bzw. selbst auch habe und ebenfalls an einer Lösung interessiert wäre.
Till: Es geht hier nicht ums Empfangen (Server-Server). Gesprochen wird von einer Client-Server-Verbindung.

Ich versuche es erneut zu beschreiben:
Mein Mailserver steht irgendwo im Internet. Ich selbst verwende zB Outlook oder dergleichen und habe mein POP3 Konto eingerichtet.
Bei diesem Konto habe ich, als rechtmäßiger Besitzer, auch eine SMTP Authentifizierung eingetragen, welche wie wir wissen zum Authentifizierungen
gegenüber dem Smarthost verwendet wird. Nur wenn diese gültig ist sollte ich Mails versenden können.
Soweit so gut - Mailversand funktioniert einwandfrei - an alle Destinationen.
Wenn ich nun den Haken bei "SMTP für Postausgangsserver verwenden" entferne, ist es mir nach wie vor möglich an andere Domains Mails zu senden, die auf dem selben SMTP-Server gehostet werden.
Versuche ich aber ein Mail an gmail.com etc zu senden, bekomme ich relay denied oder unable to relay - however. Diese Fehlermeldung soll immer kommen - es soll also nicht möglich sein, an "interne" Domains ohne gültiger Auth zu senden. Entspricht sonst schon fast einem "open relay" - natürlich nur für interne Domains.

Hoffentlich kommen wir jetzt zu einer Lösung 

LG
Clemens


----------



## Till (26. Okt. 2010)

> Wenn ich nun den Haken bei "SMTP für Postausgangsserver verwenden" entferne, ist es mir nach wie vor möglich an andere Domains Mails zu senden, die auf dem selben SMTP-Server gehostet werden.
> Versuche ich aber ein Mail an gmail.com etc zu senden, bekomme ich relay denied oder unable to relay - however. Diese Fehlermeldung soll immer kommen - es soll also nicht möglich sein, an "interne" Domains ohne gültiger Auth zu senden. Entspricht sonst schon fast einem "open relay" - natürlich nur für interne Domains.


Und das ist exakt das von einem Mailserver erwartete verhalten. Und dabei geht es genau um das empfangen und eben nicht versenden.

Also nochmal ganz von vorne:

Eine Email kommt beim Server an, es ist dabei völlig egal ob Du Dich da mit outlook verbindest oder ob diese Email von irgend einem externen Mailserver kommt. Das läuft beides per smtp Protokoll ab und durchläuft die gleichen Filter und Regeln. Das macht also keinen Unterschied!

Postfix schaut nun noch ob es eine lokale Domain ist, ist dies der Fall, dann schaut postfix nach ob er diese Mailbox hat und stellt die Email zu.

Wäre das nicht der Fall, dann würde postfix garkeine Emails mehr annhemen. Denn aml angenommen jemand schickt euch eine Email via google mail, dann verbindet sich google und nicht outlook mit dem postfix, was aus sicht von postfix ja wie oben beschriebn das gleiche ist. Wenn postfix jetzt eine Authentifizierung verlangen würde, dann müsstest Du ja vorher Dein SMTP-Passwort Google mitgeteilt haben, sonst könnte die Email nicht zugestellt werden.

Also wofür ist smtp-auth dann da. SMTP-auth diesnt dazu das niemand über Euren Server emails an einen andeeren Server versenden kann. Es dienst also nicht dazu den gesamten Emailempfang für alle eingehenden Nachrichten zu blockieren, die für diesen Server bestimmt sind.


----------



## laqup (27. Okt. 2010)

Hallo Till,

das klingt ja prinzipiell nicht ganz abwegig, aber dann erlaube mir, diese Logik auf andere E-Mail Anbieter zu übertragen.

Deiner Aussage nach, müsste es möglich sein, ein beliebiges gmx oder gmail-Konto in z.B. Thunderbird anzulegen und eine E-Mail an eine andere gmx oder gmail-Adresse zu senden. Das Ganze natürlich OHNE Zugangsdaten anzugeben. Funktioniert in der Praxis natürlich nicht, denn als Antwort meckert der Server und verlangt einen gültigen Login. 

Daher muss die Frage erlaubt sein: Wieso funktioniert das bei GMX oder GMail aber nicht bei meinem Server? Arbeiten diese Unternehmen entgegen der vorgesehenen Spezifikation für Mailserver, oder wie kann ich mir das vorstellen?

Vielen Dank übrigens für deine Bemühungen, ich kann mir vorstellen, dass es nicht immer eine dankbare Aufgabe ist, so Nervensägen wie mir zu helfen. 

Grüße,
Daniel


----------



## Till (27. Okt. 2010)

> beiten diese Unternehmen entgegen der vorgesehenen Spezifikation für Mailserver


Genauso ist es. Sie haben noch weitere Authentifizierungen in Ihre Systeme eingebaut die normalerweise nicht vorgesehen und eben auch nicht notwendig sind. Außerdem betreiben sie auch größere Serverfarmen die didizierte smtp Server für Kundenlogins vorsehen und andere die für den weiteren Emailverkehr genutzt werden. Lies Dir doch mal die RFC durch, ich habe Dir den Link ja schon gepostet wenn Du im Detail wissen möchtest wie die Spezifikationen für Email aussehen.


----------



## laqup (27. Okt. 2010)

Okay, danke dir, dann werde ich mir das mal zu Gemüte führen.


----------

