OpenSMTPD als relayhost verwenden

bsdmailer

New Member
Hallo BSDForen Leser,

ich habe folgendes Problem. Es wurde ein Mailserver mit OpenSMTPD aufgesetzt der wunderbar funktioniert. Er verschickt an intern und extern die E-Mails so wie erwartet.

Jetzt habe ich auf einem anderen Server einem postfix gesagt dass er meinen Mailserver als relayhost verwenden soll. Die relevante config sieht etwa so aus:
Code:
# specify SMTP relay host
relayhost = mail.mydomain.de

# enable SASL authentication
smtp_sasl_auth_enable = yes
# disallow methods that allow anonymous authentication.
smtp_sasl_security_options = noanonymous
# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
smtp_use_tls = yes
# where to find CA certificates
smtp_tls_CAfile = /certificates.crt

Nun das funktioniert soweit auch. Der Postfix schickt alle E-Mails an meinen Mailserver. Alle E-Mails die local auf dem Mailserver existieren werden jetzt auch zugestellt. Nur verschickt der Mailserver keine E-Mail an extern die über den relay reinkommen. Ein Auszug aus dem Debug Log:
Code:
# smtpd -dv -Tlookup
debug: init ssl-tree
info: loading pki information for mail.mydomain.de
info: OpenSMTPD 5.4.4 starting
debug: bounce warning after 1h
debug: bounce warning after 6h
debug: bounce warning after 2d
debug: using "fs" queue backend
debug: using "ramqueue" scheduler backend
debug: using "ram" stat backend
info: startup [debug mode]
debug: init ssl-tree
debug: parent_send_config_ruleset: reloading
debug: parent_send_config: configuring pony process
debug: parent_send_config: configuring ca process
queue: queue compression enabled
queue: queue encryption enabled
info: loading pki keys for mail.mydomain.de
debug: ca_engine_init: using RSA privsep engine
debug: smtp: listen on 127.0.0.1 port 10026 flags 0x400 pki ""
debug: smtp: listen on xx.xx.xx.xx port 465 flags 0x44a pki "mail.mydomain.de"
debug: smtp: listen on xx.xx.xx.xx port 25 flags 0x401 pki "mail.mydomain.de"
debug: pony: rsae_init
debug: pony: rsae_init
debug: smtp: will accept at most 501 clients
debug: init private ssl-tree
debug: queue: done loading queue into scheduler
debug: smtpd: scanning offline queue...
debug: smtpd: offline scanning done
debug: smtp: new client on listener: 0x108e76fdf000
smtp-in: New session 4743c3c59c75a798 from host xxx.mydomain.de [yy.yy.yy.yy] <--- (Postfix Server)
debug: lka: looking up pki "mail.nailfashion-leo.de"
debug: session_start_ssl: switching to SSL
debug: pony: rsae_priv_enc
smtp-in: Started TLS on session 4743c3c59c75a798: version=TLSv1/SSLv3, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256
debug: smtp: SIZE in MAIL FROM command
lookup: check "yy.yy.yy.yy" as NETADDR in table static:<localhost> -> 0
lookup: check "yy.yy.yy.yy" as NETADDR in table static:<localhost> -> 0
lookup: check "yy.yy.yy.yy" as NETADDR in table static:<anyhost> -> found
lookup: check "no-reply@mydomain.de" as MAILADDR in table static:sendername -> 0
lookup: check "test@externadresse.de" as MAILADDR in table static:blacklist-recipients -> 0
lookup: check "externadresse.de" as DOMAIN in table static:domains -> 0
lookup: check "yy.yy.yy.yy" as NETADDR in table static:<localhost> -> 0
smtp-in: Failed command on session 4743c3c59c75a798: "RCPT TO:<test@externadresse.de> ORCPT=rfc822;test@externadresse.de" => 550 Invalid recipient
smtp-in: Closing session 4743c3c59c75a798

Die Externen E-mails werden also mit => 550 Invalid recipient abgelehnt obwohl die E-Mail Adresse existiert. Leider verstehe ich noch gar nicht was das Problem ist. Könnte mir bitte jemand einen Tip geben?

Gruss der OpenBSD Mail Anfänger
 
Zeig mal deine opensmtpd config.
Ich hab das Gefühl dein postfix schickt an Port 25. Der ist jedoch in Allgemeinen nur zum Empfangen von Mails gedacht und nicht um zu relayen (für angemeldete Benutzer).
 
Hallo Rakor,

danke für Deine Antwort. Du meinst also dass ich den postfix so konfigurieren muss dass er den smtps Port nimmt? Das werde ich gleich mal testen. Hier kommt schon mal meine opensmtpd config:
Code:
queue compression
queue encryption key xxxxxx

pki mail.mydomain.de certificate "certificate.crt"
pki mail.mydomain.de key "privkey.pem"

listen on em0 port 25 tls pki mail.mydomain.de tag first
listen on em0 smtps pki mail.mydomain.de auth

# Spamassassin
listen on 127.0.0.1 port 10026 tag after_spamassassin

max-message-size 10000000
expire 4d
bounce-warn 1h, 6h, 2d

table aliases db:/etc/mail/aliases.db
table domains file:/etc/mail/domains
table vusers  file:/etc/mail/vusers
table blacklist-recipients file:/etc/mail/blacklist-recipients
table sendername file:/etc/mail/sender

accept from local for local alias <aliases> deliver to lmtp "/var/dovecot/lmtp"
accept from local for local deliver to lmtp "/var/dovecot/lmtp"

accept tagged first from any sender ! <sendername> recipient ! <blacklist-recipients> for domain <domains> relay via
smtp://localhost:10026 hostname localhost source 127.0.0.1

accept tagged after_spamassassin from any for domain <domains> virtual <vusers> deliver to lmtp "/var/dovecot/lmtp"
accept for any relay
 
Jap, in dem Falle musst du an smtps schicken.
Die Regel "accept for any relay" ist identisch zu "accept from local for any relay" (denn from local ist default). Daher wird er nur mails relayen die von lokalen Benutzern stammen.
Verbindungen die mit "auth" versehen sind werden als lokale Benutzer bearbeitet (wenn die Verbindung sich auch authorisiert hat).

Nur deine smtps-Verbindung hat auth (was auch richtig so ist), entsprechend kann auch nur über diese der Server als Relay verwendet werden. Über Port 25 können nur Mails zugestellt werden die auf diesem Host enden.

Grüße
 
Hallo Rakor,

ich glaube jetzt habe ich es verstanden. Jetzt ist es nur leider etwas aufwändig dass man für jede E-Mail Adresse die man relayen will den Login extra konfigurieren muss/soll. Nach ein wenig gebastele habe ich jetzt folgende Einstellungen in der smtpd.conf:
Code:
...
table relaysource file:/etc/mail/relaysource

accept from local for any relay
accept from source <relaysource> for any relay

In der Table habe ich die externe IP-Adresse des postfix Servers stehen. Diese Einstellung funktioniert soweit gut. Kann man das so lassen oder gibt es da irgendwelche Sicherheitsbedenken?

Danke erstmal für Deine Mühe mir den Mail Server zu erläutern.

Grüße
 
Ich bin mir nicht sicher ob ich dich richtig verstanden habe. Aber wenn du mal angenommen den Benutzer "Fritz" auf deinem Rechner hast und dieser hat einen gültigen Login. Dann kannst du mit diesem Login verschicken was du willst.. So kannst du z.B. auch Mails als "egon@fremdedomain.com" verschicken. Wer relayen darf, kann wegschicken was er will. Es mag nur sein, dass der empfangende Server per reverseDNS sagt "Du hast gar nicht von dem Host zu kommen" und lehnt die Mail ab. Aber das ist eines Frage deiner DNS-Einträge und hat nix mit dem Mailserver zu tun. Völlig problemlos ist es mit dem "Fritz" Mails als ""karl@deinedomain.de" abzuschicken.

Ich würde eigentlich keine Konfiguration im Internet fest auf der IP des Absenders aufbauen wollen wenn es alternativen gibt. Im dümmsten Fall ist dein Postfix ein DSL-Rechner der hin und wieder mal die IP ändert... ;)
 
Hallo Rakor,

leider komme ich nicht wirklich weiter. Der opensmtpd nimmt keine AUTH PLAIN Verbindung an über TLS. Da der Postfix sich nur über STARTTLS Verbinden möchte bleibt mir wohl auch keine andere Wahl.
Siehe postfix log:
Code:
...
Feb 28 19:36:42 v22015052839725415 postfix/smtp[2252]: CLIENT wrappermode (port smtps/465) is unimplemented
Feb 28 19:36:42 v22015052839725415 postfix/smtp[2252]: instead, send to (port submission/587) with STARTTLS

Also musste ich dem opensmtpd noch einen listener auf den port 587 hinzufügen:
Siehe smtpd.conf:
Code:
...
listen on em0 port submission tls-require pki mail.mydomain.de auth

Beim nächsten Versuch konnte sich der postfix auch noch nicht verbinden. Im Logfile vom opensmtpd steht:

Code:
Feb 28 22:00:45 mail smtpd[22078]: smtp-in: New session 13f5ca2951a7673e from host xxx.mydomain.de [xx.xxx.xxx.xxx]
Feb 28 22:00:45 mail smtpd[22078]: smtp-in: Started TLS on session 13f5ca2951a7673e: version=TLSv1/SSLv3, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256
Feb 28 22:00:45 mail smtpd[22078]: smtp-in: Authentication failed for user xxx on session 13f5ca2951a7673e
Feb 28 22:00:46 mail smtpd[22078]: smtp-in: Failed command on session 13f5ca2951a7673e: "AUTH PLAIN (...)" => 535 Authentication failed
Feb 28 22:00:46 mail smtpd[22078]: smtp-in: Closing session 13f5ca2951a7673e

Leider ist auch der Versuch fehlgeschlagen den Login über mein Standart E-Mail Programm über den Port 587 einzurichten. (Der Default mit Port 465 funktioniert einwandfrei).
Zuletzt habe ich es dann noch mal manuell versucht:
Code:
$ openssl s_client -starttls smtp -connect mail.mydomain.de:587
CONNECTED(00000003)
---
Server certificate
...
...
...
---
250 HELP
ehlo mail.mydomain.de
250-mail.mydomain.de Hello mail.mydomain.de [xx.xxx.xxx.xxx], pleased to meet you
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-SIZE 10000000
250-DSN
250-AUTH PLAIN LOGIN
250 HELP
AUTH PLAIN xxxxxxxxxxxxxx
535 Authentication failed

Ich bin mir absolut sicher dass Benutzername und Passwort korrekt sind. Kann es sein das es einen Fehler in meiner TLS Konfiguration auf dem Server gibt?
 
Zurück
Oben