staging.inyokaproject.org

Benutzerauthentifizierung an postfix Relayhost

Status: Ungelöst | Ubuntu-Version: Server 19.10 (Eoan Ermine)
Antworten |

zax_v1.2

Anmeldungsdatum:
10. Januar 2008

Beiträge: 123

Hej!

Ich möchte einen postfix-Server aufsetzen, der lediglich als Relayhost fungiert. (Ich hoffe Relayhost ist das richtige Wort und beschreibt nicht etwas, das ich nicht meine.) Ich möchte also das Postfach eines eMailanbieters nutzen und von verschiedenen Anbietern (man sammelt ja im Laufe seines Lebens eMailadressen) werden die eMails einfach dahin weitergeleitet. Ich möchte jedoch auch die Möglichkeit haben, emails mit all diesen unterschiedlichen Adressen versenden zu können. (Ohne halt in meinem Mailclient verschiedene Konten anlegen zu müssen.) Damit das auch von Unterwegs und mit Smartphone und Laptop und so funktioniert (und die Mails synchron bleiben), habe ich überlegt einen postfix Server auf einem VPS aufzusetzen, den ich in meinen eMailsclients als Ausgangsserver einstelle und der dann mittels Sender-abhängiger Authentifizierung die jeweils richtigen Mailserver zum tatsächlichen Versand benutzt.

Da ich hier eine sehr geringe Nutzerzahl zwischen 1 und 5 erwarte (Falls das mal gut klappt, hole ich evtl. wenige Familienmitglieder ins Boot.), scheint es mir am leichtesten einfach für jeden einen Systembenutzer anzulegen und dagegen zu authentifizieren. Im Wiki (SASL-Authentifizierung als Server) steht jedoch, dass die Anleitung fehlerhaft sei und sich die Konfiguration grundlegend geändert hat und sich somit auch die Vorgehensweise grundlegend ändern muss. Jetzt will ich natürlich keiner fehlerhaften Anleitung folgen. Alle Anleitungen die ich so im Internet finde, setzen aber einen vollwertige Mailserver auf und postfix authentifiert zumeist gegen dovecot. Da ich aber den Wartungsaufwand so gering wie möglich halten will, will ich ja auf dovecot verzichten.

Kann mir jemand sagen, an welchen Stellen die Anleitung fehlerhaft ist? Es erscheint mir, als müsste es eigentlich leicht sein, die Nutzerauthentifizierung einzurichten. (Klar muss man immer noch gründlich aufpassen, kein open Relay zu betreiben aber dazu gibt es [meiner Einschätzung nach] gute Anleitungen und Erklärungen, die ja auch hier im Wiki verlinkt sind.)

Aktuell zum testen installiert habe Ubuntu Server 19.10 und da kommt postfix 3.4.5 mit.

Vielen Dank und lieben Gruß

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Ein Relayhost beschreibt nur einen (kleinen) Teil deines Vorhabens.

Vielleicht ist es einfacher und uebersichtlicher sich zuerst nur einem der beiden Themen zu widmen. Denn eingehenden und ausgehenden Mailverkehr kann man gut trennen.

Da die eigentliche Frage sich nur auf SASL zu beziehen scheint: https://wiki.dovecot.org/HowTo/PostfixAndDovecotSASL Das ist die Referenz, nach der ich vorgehe und du scheinst ja auch Postfix und Dovecot nutzen zu wollen.

zax_v1.2

(Themenstarter)

Anmeldungsdatum:
10. Januar 2008

Beiträge: 123

Danke für deine Antwort. Da habe ich wohl zu verklausuliert beschrieben, was ich machen will.

Ich möchte kein Dovecot nutzen. Nur Postfix. Nur zum versenden.

Die eingehenden eMails landen alle im Postfach eines eMailanbieters. (Da kommen sie rein, indem ich einfach bei meinen unterschiedlichen Adressen eine Weiterleitung einrichte.)

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Ah, da hab ich folgenden einleitenden Satz:

zax_v1.2 schrieb:

Ich möchte also das Postfach eines eMailanbieters nutzen und von verschiedenen Anbietern (man sammelt ja im Laufe seines Lebens eMailadressen) werden die eMails einfach dahin weitergeleitet.

Falsch interpretiert.

Dann kann ich da kaum weiterhelfen, denn mit Cyrus (SASL) hab ich leider keine Erfahrung. Ich kenne die offizielle Dokumentation unter http://www.postfix.org/SASL_README.html als weitere (gute) Informationsquelle.

zax_v1.2

(Themenstarter)

Anmeldungsdatum:
10. Januar 2008

Beiträge: 123

Dank dir.

Ich habe mich anhand der Doku und der hier im wiki verlinkten Artikel durchgearbeitet und es scheint alles so zu funktionieren, wie ich mir das vorstelle. Ich kopiere hier mal meine main.cf und master.cf rein. Zum einen findet es evtl. jemand hilfreich, der was ähnliches vorhat und zum anderen findet sich evtl. jemand, der mal drüber gucken kann. Evtl. sagt ihr ja: "Bist du verrückt? So kannst du doch keinen Mailserver betreiben." In diesem Fall wäre ich für Hinweise sehr dankbar.

main.cf

###
# Allgemein
###
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2
myhostname = email.meineDomain.de
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, email.meineDomain.de, localhost.meineDomain.de, , localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sender_login_maps = hash:/etc/postfix/controlled_envelope_senders

###
# TLS parameters
###
tls_preempt_cipherlist = yes
tls_ssl_options = NO_COMPRESSION
tls_high_cipherlist = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA128-SHA:AES128-SHA
#ausgehende SMTP-Verbindungen
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = dane
smtp_dns_support_level = dnssec
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_ciphers = high
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
#eingehende SMTP-Verbindungen
smtpd_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_ciphers = high
smtpd_tls_cert_file=/etc/letsencrypt/live/email.meineDomain.de/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/email.meineDomain.de/privkey.pem
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

###
#Restrictions
###
smtpd_relay_restrictions = reject_non_fqdn_recipient reject_unknown_recipient_domain permit_mynetworks reject_unauth_destination
smtpd_client_restrictions = permit_mynetworks reject_unknown_client_hostname
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname
smtpd_data_restrictions = reject_unauth_pipelining
mua_relay_restrictions = reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_mynetworks,permit_sasl_authenticated,reject
mua_sender_restrictions = permit_mynetworks,reject_non_fqdn_sender,reject_sender_login_mismatch,permit_sasl_authenticated,reject
mua_client_restrictions = permit_mynetworks,permit_sasl_authenticated,reject

###
#korrekten absender setzen
###
smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noplaintext noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_connection_cache_on_demand = no
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_dependent

master.cf

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: http://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
smtp      inet  n       -       y       -       -       smtpd
  -o smtpd_sasl_auth_enable=no
#smtp      inet  n       -       y       -       1       postscreen
#smtpd     pass  -       -       y       -       -       smtpd
#dnsblog   unix  -       -       y       -       0       dnsblog
#tlsproxy  unix  -       -       y       -       0       tlsproxy
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_path=smtpd
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_tls_auth_only=yes
  -o broken_sasl_auth_clients=yes
#  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_relay_restrictions=$mua_relay_restrictions
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       y       -       -       smtpd
#  -o syslog_name=postfix/smtps
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       y       -       -       qmqpd
pickup    unix  n       -       y       60      1       pickup
cleanup   unix  n       -       y       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       y       1000?   1       tlsmgr
rewrite   unix  -       -       y       -       -       trivial-rewrite
bounce    unix  -       -       y       -       0       bounce
defer     unix  -       -       y       -       0       bounce
trace     unix  -       -       y       -       0       bounce
verify    unix  -       -       y       -       1       verify
flush     unix  n       -       y       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       y       -       -       smtp
relay     unix  -       -       y       -       -       smtp
        -o syslog_name=postfix/$service_name
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       y       -       -       showq
error     unix  -       -       y       -       -       error
retry     unix  -       -       y       -       -       error
discard   unix  -       -       y       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       y       -       -       lmtp
anvil     unix  -       -       y       -       1       anvil
scache    unix  -       -       y       -       1       scache
postlog   unix-dgram n  -       n       -       1       postlogd
#
# ====================================================================
# 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/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
#  mailbox_transport = lmtp:inet:localhost
#  virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# 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}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -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/lib/bsmtp/bsmtp -t$nexthop -f$sender $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}

P.S. Nochmal um klarzustellen, was der Server tun soll. Der Server soll ausschließlich eMails von meinen Mailclients entgegen nehmen und über die korrekten/zuständigen Mailserver weiter verschicken. Eigentlich dürfte der nie eine eingehende eMail zu Gesicht bekommen. Er ist auch in den DNS Einträgen für keine Domain als Mailserver verantwortlich oder so. (lediglich eMails an benutzer@email.meineDomain.de würden hier ankommen und wegen der aliases direkt weitergeleitet.)

P.P.S. Was genau an dem hier Wiki Eintrag SASL-Authentifizierung-als-Server falsch ist, habe ich jetzt nicht erkannt. Ich habe mich durchaus daran orientiert und es scheint ja zu funktionieren. Das verunsichert mich natürlich etwas. Hoffe ich habe dadurch keine Sicherheitslücken geöffnet.

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

zax_v1.2 schrieb:

master.cf

[...]
smtp      inet  n       -       y       -       -       smtpd
  -o smtpd_sasl_auth_enable=no
[...]

Wenn du smtp (Port 25) nicht brauchst, kannst du den auch deaktivieren AFAIK (nicht getestet, aber waere komisch wenn nicht)

P.P.S. Was genau an dem hier Wiki Eintrag SASL-Authentifizierung-als-Server falsch ist, habe ich jetzt nicht erkannt. Ich habe mich durchaus daran orientiert und es scheint ja zu funktionieren.

Danke fuer das Feedback, ich hab darauf in der Diskussion zum Wiki-Artikel hingewiesen.

zax_v1.2

(Themenstarter)

Anmeldungsdatum:
10. Januar 2008

Beiträge: 123

Stimmt. Danke für den Hinweis.

Antworten |