Mail Server WIE: Zugriff auf MailServer mit GeoIP einschränken?

Status
Für weitere Antworten geschlossen.

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.587
Punkte für Reaktionen
1.424
Punkte
234
Hallo zusammen,

der MailServer gehört ja zu den Standard-IP-Abklopfern und werden ja auch zuverlässig geblockt. Allerdings würde ich gerne den Zugriff (LogIn) auf den Mailserver nur für Zugriffe aus Deutschland zulassen. Allerdings scheine ich dann auch keine E-Mails mehr aus anderen Ländern bekommen zu können (gmail.com, outlook.com, mail.ru). Es sollen mir natürlich alle E-Mails schicken können. Wenn ich jetzt allerdings den Port 25 im Router nicht weiterleite, bekomme ich gar keine E-Mails mehr. Ich vermute, darüber werden mir die E-Mails zugestellt.
Ich nutze IMAP SSL/TLS per Port 993 und SMTP SSL per Port 465 bzw. 587. Diese Ports sind auch nur von Deutschland aus erreichbar.

Wie muss ich vorgehen, wenn ich E-Mails aus aller Welt empfangen möchte, aber den LogIn auf Deutschland beschränken möchte?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Wie Du richtig schreibst: die Kommunikation zwischen den Mailservern (also dem Mailserver einer irgendwo auf der Welt eingelieferten email und Deinem Mailserver) läuft definitionsgemäß ohne Authentifizierung über Port 25, den solltest/musst Du also für alle Quellen freigeben.
Das authentifizierte Einliefern von emails, die Du über Deinen email-Server versenden möchtest, ist dagegen entsprechend RFC auf 465 (SMTP mit SSL) oder 587 (SMTP mit optionalem STARTTLS, was Du zwingend vorschreiben solltest) vorgesehen. Dennoch geht dafür auch immer noch Port 25, was einige Clients auch gerne noch standardmäßig tun...
Edit:
hier hatte jahlives mal zu einer ähnlichen Frage geschrieben.
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.587
Punkte für Reaktionen
1.424
Punkte
234
Vielen Dank für den Einblick. So ungefähr hatte ich es vermutet.

… SMTP mit optionalem STARTTLS, was Du zwingend vorschreiben solltest …

Wie kann ich das erreichen?
Meine SMTP-Konfiguration sieht derzeit so aus:
Bildschirmfoto 2014-10-06 um 21.59.52.png
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Welche Version hast Du denn da laufen?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Ah, deshalb - ich habe die letzte Release, und da gibt's den GUI-Eintrag für den SMTP-TLS noch nicht. Ich habe daher Port 587 per Hand aktiviert durch einen Eintrag in der /var/packages/MailServer/target/etc/template/master.template :
Code:
submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
Durch das 'smtpd_tls_security_level=encrypt' erzwingst Du die Verschlüsselung.
Schau einmal, was bei Dir dort zu finden ist...
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.587
Punkte für Reaktionen
1.424
Punkte
234
Die Einträge sind bei mir auskommentiert:
Rich (BBCode):
#smtp      inet  n       -       n       -       -       smtpd
#submission inet n       -       n       -       -       smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

Reicht es da, die Zeile "smtpd_tls_security_level=encrypt" zu aktivieren, oder sind die Einträge untereinander abhängig?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Kannst Du mal den gesamten Inhalt posten?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.587
Punkte für Reaktionen
1.424
Punkte
234
/var/packages/MailServer/target/etc/template/master.template:
Rich (BBCode):
#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
#smtp      inet  n       -       n       -       -       smtpd
#submission inet n       -       n       -       -       smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       n       -       -       smtp
	-o smtp_fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
#maildrop  unix  -       n       n       -       -       pipe
#  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
#uucp      unix  -       n       n       -       -       pipe
#  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# ====================================================================
#
# Other external delivery methods.
#
#ifmail    unix  -       n       n       -       -       pipe
#  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
#
#bsmtp     unix  -       n       n       -       -       pipe
#  flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
#
#scalemail-backend unix -       n       n       -       2       pipe
#  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
#  ${nexthop} ${user} ${extension}
#
#mailman   unix  -       n       n       -       -       pipe
#  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
#  ${nexthop} ${user}
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
mmh, ok, dort scheint das dann scheinbar woanders zu stecken... und wie sieht die master-Datei ein Verzeichnis höher (also in dem etc-Ordner) aus?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.587
Punkte für Reaktionen
1.424
Punkte
234
/var/packages/MailServer/target/etc/master.cf:
Rich (BBCode):
#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
#smtp      inet  n       -       n       -       -       smtpd
#submission inet n       -       n       -       -       smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       n       -       -       smtp
	-o smtp_fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
#maildrop  unix  -       n       n       -       -       pipe
#  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
#uucp      unix  -       n       n       -       -       pipe
#  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# ====================================================================
#
# Other external delivery methods.
#
#ifmail    unix  -       n       n       -       -       pipe
#  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
#
#bsmtp     unix  -       n       n       -       -       pipe
#  flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
#
#scalemail-backend unix -       n       n       -       2       pipe
#  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
#  ${nexthop} ${user} ${extension}
#
#mailman   unix  -       n       n       -       -       pipe
#  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
#  ${nexthop} ${user}
25 inet n - n - - smtpd
465 inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
587 inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Ok, die letzte Zeile in der master.cf definiert den Port 587, hier aber eben nur mit der Aktivierung der Authentifikation. Aus welchem Konfig-File das herausgezogen wird, kann ich jetzt nicht sagen - die master.cf wird beim Start aus den ganzen Konfigurationen generiert (die Datei selbst kann man also nicht editieren, das wird immer wieder überschrieben).
Da die Zeilen in master.template, die ich oben gepostet hatte, aber ebenfalls den Port 587 definieren, könntest Du einmal testweise den Mailserver stoppen, die Auskommentierung alle genannten Zeilen in der master.template entfernen und danach den Mailserver wieder starten. Dann müsste das auch in der master.cf auftauchen.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
zum Deaktivieren der Auth auf Port 25 in main.cf
Code:
smtpd_sasl_auth_enable = no
dann in master.cf bei der Definition für Port 465 resp 587
Code:
...
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_tls_security_level=may
 -o smtpd_tls_auth_only=yes
das sollte die Auth auf Port 25 abschalten und auf Port 587 resp 465 aktivieren
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Aber das 'smtpd_tls_security_level=may' liefert keine gesicherte Verschlüsselung - wenn das STARTTLS nicht sauber durchläuft (weil der Client es nicht mitmacht oder jemand auf der Leitung es filtert), bleibt die Verbindung unverschlüsselt inkl. Übersendung der Benutzerdaten, ohne dass der User es merkt. Ist halt der saure Apfel, in den man dann beißt... oder man nimmt dann doch - wie ich oben schrieb - ein 'smtpd_tls_security_level=encrypt'.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
may oder encrypt macht hier keinen Unterschied ;-) Beides STARTTLS: bei encrypt und wenn der Client STARTTLS nicht macht resp STARTTLS scheitert schickt der Client die Logindaten genau gleich unverschlüsselt. Der einzige Unterschied zwischen may und encrypt bei STARTTLS ist, dass bei encrypt tls_auth_only=yes impliziert wird (http://www.postfix.org/postconf.5.html#smtpd_tls_security_level)
Das "echte" encrypt erreicht man durch Nutzung von smtpd_tls_wrappermode
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Aber da besteht schon noch ein wenn auch kleiner Unterschied. Das 'encrypt tls_auth_only=yes' akzeptiert von Serverseite zwar nur die verschlüsselte Anmeldung am Server, doch ob der Client zumindest den Usernamen unverschlüsselt sendet oder nicht, hängt eben von 'smtpd_tls_security_level' ab - bei 'may' kann der Client bei Mißerfolg von STARTTLS seine seinen Usernamen noch unverschlüsselt an den Server senden (der dann ablehnt, weil eben STARTTLS nicht erfolgreich war), bei 'encrypt' bricht der Server schon ab, wenn STARTTLS nicht beantwortet wurde, sp dass auch der Username gar nicht mehr über's Netz geht.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
bei 'encrypt' bricht der Server schon ab, wenn STARTTLS nicht beantwortet wurde, sp dass auch der Username gar nicht mehr über's Netz geht.
wie gesagt das ist dasselbe bei STARTTLS :) STARTTLS schickt der Client. Der Server kann keine STARTTLS Verbindung zum Client initialisieren, das Kommando dazu kommt vom Client. In dem Moment wo der Server auf das STARTTLS Kommando des Clients prüft hat dieser den Usernamen und PW u.U. bereits rausgelasen
Das von dir beschriebene Problem lässt sich mit STARTTLS (explizites SSL) nicht lösen. Das geht nur mit implizitem SSL via wrappermode, wo bereits eine SSL Verbindung stehen muss bevor auch nur das erste Paket des Protokolls durchgeht. Bei STARTTLS geht mindestens das erste Paket des Protokolls unverschlüsselt an den Server und wenn der Client so blöd ist und dort gleich Benutzername/PW schickt, kannst du serverseitig nicht machen :)
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Mmh, ok, das stimmt sicher - dann muss das aber ein selten dämlich programmierter Client sein, bisher hab ich da nur anständiges Verhalten gesehen.
 
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