Kann OpenSMTPd mehrere Domains bedienen?

satriani

SysLion
Um mein Vorhaben darzustellen, hier ein Ausschnitt aus meiner smtpd.conf

Code:
listen on re0 tls pki mail.domain1.com auth-optional filter rspamd
listen on re0 tls pki mail.domain2.org auth-optional filter rspamd


listen on re0 smtps pki mail.domain1.com auth <passwd> filter rspamd
listen on re0 smtps pki mail.domain2.org auth <passwd> filter rspamd

listen on re0 port submission tls-require pki mail.domain1.com auth <passwd> filter rspamd
listen on re0 port submission tls-require pki mail.domain2.org auth <passwd> filter rspamd

Wie erwartet startet der Dienst nicht, mit den logs

Code:
Mar 16 12:29:12 MS smtpd[49624]: info: OpenSMTPD 7.3.0-portable starting
Mar 16 12:29:12 MS smtpd[49627]: control: control socket already listening
Mar 16 12:29:12 MS smtpd[49629]: dispatcher: smtpd: bind: Address already in use
Mar 16 12:29:12 MS smtpd[49625]: smtpd: process control socket closed

Wie mit mehreren Domains auf einem Hostsystem auf tls, amtps und port zu lauschen?
 
zu "listen" und "pki" liest man in der man page:
pki pkiname
For secure connections, use the
certificate associated with pkiname
(declared in a pki directive) to prove
a mail server's identity. This option
can be used multiple times to provide
alternate certificates for SNI.

also waere doch das hier eher der ansatz:
listen on re0 tls pki mail.domain2.org pki mail.domain1.com auth-optional filter rspamd
untested... :)
 
Ich habe auch mehrere Domains mit OpenSMTPD und das funktioniert tadellos. Allerdings nur eine IP. Mit zwei oder drei IP's wirds tricky, wenn die alle als alias an einem Netzwerkinterface haengen. Aber mit einer IP gehts ohne viel Aufwand. Dann nutzen alle weiteren Domains den mx der Hauptdomain und brauchen auch kein eigenes Cert.

Code:
smtp ciphers "HIGH:!aNULL:!eNULL:!SSLv3:!TLSv1:!DSS:!ECDSA:!RSA:!SHA1:-ECDH:ECDHE:+SHA384:+SHA256"

pki mail.mydomain.de cert "/etc/ssl/mydomain.de.crt"
pki mail.mydomain.de key "/etc/ssl/private/mydomain.de.key"

filter check_dyndns phase connect match rdns \
        regex { '.*\.dyn\..*', '.*\.dsl\..*' } \
        disconnect "550 no residential connections"

filter check_rdns phase connect match !rdns \
        disconnect "550 no rDNS is so 80s"

filter check_fcrdns phase connect match !fcrdns \
        disconnect "550 no FCrDNS is so 80s"

filter senderscore proc-exec "filter-senderscore -blockBelow 10 \
        -junkBelow 70 -slowFactor 5000"

filter rspamd proc-exec "filter-rspamd"

table aliases file:/etc/mail/aliases
table passwd file:/etc/mail/passwd
table vdomains db:/etc/mail/vdomains.db
table vusers db:/etc/mail/vusers.db

listen on lo0 port 25

listen on egress port 25 tls pki mail.mydomain.de \
        filter { check_dyndns, check_rdns, check_fcrdns, senderscore, rspamd }

listen on egress port 465 smtps pki mail.mydomain.de filter rspamd auth <passwd>

action "local_mail" maildir alias <aliases>
action "virtuals" lmtp "/var/dovecot/lmtp" rcpt-to virtual <vusers>
action "outbound" relay helo mail.mydomain.de

match from any for domain <vdomains> action "virtuals"
match for local action "local_mail"

match from any auth for any action "outbound"
match for any action "outbound"

In /etc/mail/vdomains werden dann die Domains eingetragen und in /etc/vmail/vusers die Email-Adressen und User.

Dann noch zu vusers.db und vdomains.de mappen:

Code:
$ makemap /etc/mail/vusers
$ makemap -t set /etc/mail/vdomains
 
Nachtrag:

Mit mehreren IP's geht es auch. Habe das noch in einer aelteren Config gefunden. Zwei separate listen on am gleichen Interface geht allerdings nicht. Entweder benoetigst Du dann zwei unterschiedliche Interfaces oder Du nutzt virtuelle Interfaces. Moeglicherweise funktioniert das aber auch so, wie double-p oben gepostet hat. Waere mal einen Versuch wert.

Code:
listen on egress port 25 tls pki mail.mydomain.de \
        hostnames { aa.bb.cc.dd = mail.mydomain.de, \
                                ee.ff.gg.hh = mail.myotherdomain.com } \
        filter { check_dyndns, check_rdns, check_fcrdns, senderscore, rspamd }

listen on egress port 465 smtps pki mail.mydomain.de \
        hostnames { aa.bb.cc.dd = mail.mydomain.de, \
                                ee.ff.gg.hh = mail.myotherdomain.com } \
        filter rspamd auth <passwd>
 
Zurück
Oben