OpenLDAP Dovecot Postfix

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
sharbich
Beiträge: 176
Registriert: 27.09.2013 21:12:40

OpenLDAP Dovecot Postfix

Beitrag von sharbich » 12.04.2021 09:57:59

Hallo,
ich bin dabei mir einen eigenen Mailserver einzurichten. Bevor ich diesen online stelle versuche ich erstmal diesen rein intern zu nutzen. Sprich ich habe mir im LDAP zwei Postfächer eingerichtet und versuche zwischen diesen zu mailen. Melde ich mich mit meinen lokalen Mail Client Thunderbird am Dovecot Server an und möchte Nachrichten versenden dann funktioniert der Mailversand. Warte ich mit geöffneten Mailclient ca. 30 Minuten dann funktioniert der Mailversand nicht mehr. Erst wieder nach einer Abmeldung und Neuanmeldung des Clients (schließen und öffnen)

Anmeldung mit Thunderbird = Mailversand funktioniert
Mailclient geöffnet ohne eine Aktivität z. B. 30 Minuten = Mailversand nicht möglich

Im log habe ich fogendes gefunden:

Code: Alles auswählen

2021-04-12 09:26:06 auth: Debug: client in: AUTH	1	PLAIN	service=imap	secured=tls	session=GlhKbcG/UqnAqB5D	lip=192.168.20.20	rip=192.168.30.67	lport=143	rport=43346	local_name=imap.intern.example.com	ssl_cipher=TLS_AES_128_GCM_SHA256	ssl_cipher_bits=128	ssl_pfs=KxANY	ssl_protocol=TLSv1.3
2021-04-12 09:26:06 auth: Debug: client passdb out: CONT	1	
2021-04-12 09:26:06 auth: Debug: client in: CONT	1	AHN0ZWZhbi5oYXJiaWNoQGhhcm5ldC5kZQBTdGVmYW5IYXJiaWNoMTI= (previous base64 data may contain sensitive data)
2021-04-12 09:26:06 auth: Debug: ldap(stefan.harbich@example.com,192.168.30.67,<GlhKbcG/UqnAqB5D>): cache hit: {SSHA}rLozj0qwg5FfBUfCh9eeJQqq9vLtmYiJ	user=stefan.harbich
2021-04-12 09:26:06 auth: Debug: ldap(stefan.harbich@example.com,192.168.30.67,<GlhKbcG/UqnAqB5D>): username changed stefan.harbich@example.com -> stefan.harbich
2021-04-12 09:26:06 auth: Debug: client passdb out: OK	1	user=stefan.harbich		original_user=stefan.harbich@example.com
2021-04-12 09:26:06 auth: Debug: master in: REQUEST	1065484289	29438	1	1b3ce92037fd22dd95eff66f0f2fb97a	session_pid=29439	request_auth_token
2021-04-12 09:26:06 auth: Debug: ldap(stefan.harbich,192.168.30.67,<GlhKbcG/UqnAqB5D>): userdb cache miss
2021-04-12 09:26:06 auth: Debug: ldap(stefan.harbich,192.168.30.67,<GlhKbcG/UqnAqB5D>): user search: base=ou=users,dc=harnet,dc=de scope=subtree filter=(&(uid=stefan.harbich)(objectClass=inetOrgPerson)(mailEnabled=TRUE)) fields=mailQuota,uid,uid
2021-04-12 09:26:06 auth: Debug: ldap(stefan.harbich,192.168.30.67,<GlhKbcG/UqnAqB5D>): result: uid=stefan.harbich mailQuota=2G; mailQuota,uid unused
2021-04-12 09:26:06 auth: Debug: master userdb out: USER	1065484289	stefan.harbich	quota_rule=*:bytes=2G	home=/vmail/mailboxes/stefan.harbich	mail_location=maildir:/vmail/mailboxes/stefan.harbich/mail	auth_token=6e9680681785f7b50af615525486d89994e2002c	auth_user=stefan.harbich@example.com
Scheint irgendwie mit dem cache zusammen zu hängen?

Ich poste Euch auch mal folgende Dateien:
dovecot.conf

Code: Alles auswählen

root@ldap:~# cat /etc/dovecot/dovecot.conf
##
## Aktivierte Protokolle
##

protocols = imap lmtp sieve 

##
## Erweitertes Logging
##

log_path = /var/log/dovecot/dovecot-error.log
info_log_path = /var/log/dovecot/dovecot-info.log
debug_log_path = /var/log/dovecot/dovecot-debug.log
auth_verbose = yes
auth_verbose_passwords = no
auth_debug = yes
auth_debug_passwords = yes
mail_debug = yes
verbose_ssl = yes
login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k"
log_timestamp = "%Y-%m-%d %H:%M:%S "

##
## TLS Config
## Quelle: https://ssl-config.mozilla.org/#server=dovecot&version=2.3.9&config=intermediate&openssl=1.1.1d&guideline=5.4
##

ssl = required
ssl_cert = </etc/ssl/certs/mail.intern.example.com.crt
ssl_key = </etc/ssl/private/mail.intern.example.com.key
ssl_dh = </etc/dovecot/dh4096.pem
ssl_min_protocol = TLSv1.2
ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl_prefer_server_ciphers = no


##
## Dovecot services
##

service imap-login {
    inet_listener imap {
        port = 143
    }
}

service managesieve-login {
    inet_listener sieve {
        port = 4190
    }
}

service lmtp {
    unix_listener /var/spool/postfix/private/dovecot-lmtp {
        mode = 0660
        group = postfix
        user = postfix
    }

    user = vmail
}

service auth {
    ### Auth socket für Postfix
    unix_listener /var/spool/postfix/private/auth {
        mode = 0660
        user = postfix
        group = postfix
    }

    ### Auth socket für LMTP-Dienst
    unix_listener auth-userdb {
        mode = 0660
        user = vmail
        group = vmail
    }
}

auth_cache_size = 50000 # ~ 200 Benutzer mit Passwort
auth_cache_ttl = 3000 s # in Sekunden, 5 Minute
auth_cache_negative_ttl = 100 s # wenn Benutzer nicht existierte bei letztem Check

##
##  Protocol settings
##

protocol imap {
    mail_plugins = $mail_plugins quota imap_quota imap_sieve
    mail_max_userip_connections = 20
    imap_idle_notify_interval = 29 mins
}

protocol lmtp {
    postmaster_address = postmaster@example.com
    mail_plugins = $mail_plugins sieve notify push_notification
}


##
## Client authentication
##

disable_plaintext_auth = yes
auth_mechanisms = plain login
auth_username_format = %Lu

passdb {
    driver = ldap
    args = /etc/dovecot/dovecot-ldap.conf
}

userdb {
    driver = ldap
    args = /etc/dovecot/dovecot-ldap.conf
}


##
## Address tagging
##
recipient_delimiter = +


##
## Mail location
##

mail_uid = vmail
mail_gid = vmail
mail_privileged_group = vmail

##
## Mailbox configuration
##

namespace inbox {
    inbox = yes

    mailbox Spam {
        auto = subscribe
        special_use = \Junk
    }

    mailbox Trash {
        auto = subscribe
        special_use = \Trash
    }

    mailbox Drafts {
        auto = subscribe
        special_use = \Drafts
    }

    mailbox Sent {
        auto = subscribe
        special_use = \Sent
    }
}


##
## Mail plugins
##

plugin {
    sieve_plugins = sieve_imapsieve sieve_extprograms
    sieve_before = /vmail/sieve/global/spam-global.sieve
    sieve = file:/vmail/sieve/%d/%n/scripts;active=/vmail/sieve/%d/%n/active-script.sieve

    ###
    ### Spam learning
    ###
    # From elsewhere to Spam folder
    imapsieve_mailbox1_name = Spam
    imapsieve_mailbox1_causes = COPY
    imapsieve_mailbox1_before = file:/vmail/sieve/global/learn-spam.sieve

    # From Spam folder to elsewhere
    imapsieve_mailbox2_name = *
    imapsieve_mailbox2_from = Spam
    imapsieve_mailbox2_causes = COPY
    imapsieve_mailbox2_before = file:/var/vmail/sieve/global/learn-ham.sieve

    sieve_pipe_bin_dir = /usr/bin
    sieve_global_extensions = +vnd.dovecot.pipe

    quota = maildir:User quota
    quota_exceeded_message = Benutzer %u hat das Speichervolumen überschritten. / User %u has exhausted allowed storage space.
}
dovecot-ldap.conf

Code: Alles auswählen

root@ldap:~# cat /etc/dovecot/dovecot-ldap.conf
uris                 = ldaps://ldap.intern.harnet.de
dn                   = cn=admin,dc=harnet,dc=de
dnpass               = Marlies(6789)
tls                  = no
auth_bind            = no
base                 = ou=users,dc=harnet,dc=de
scope                = subtree
default_pass_scheme  = SSHA-512
ldap_version         = 3
user_attrs = \
  =quota_rule=*:bytes=%{ldap:mailQuota}, \
  =home=/vmail/mailboxes/%{ldap:uid}, \
  =mail_location=maildir:/vmail/mailboxes/%{ldap:uid}/mail
user_filter = (&(uid=%u)(objectClass=inetOrgPerson)(mailEnabled=TRUE))
pass_filter = (&(uid=%n)(objectClass=inetOrgPerson)(mailEnabled=TRUE))
## iterate_attrs        = mail=user
iterate_attrs        = uid=%n
iterate_filter       = (objectClass=inetOrgPerson)
main.cf

Code: Alles auswählen

root@ldap:~# cat /etc/postfix/main.cf
##
## Netzwerkeinstellungen
##

mydomain = example.com
mynetworks = 192.168.0.0/16
inet_interfaces = 192.168.20.20
myhostname = mail.intern.example.com
myorigin = /etc/mailname
mydestination = localhost.localdomain localhosts example.com

##
## Mail-Queue Einstellungen
##

maximal_queue_lifetime = 1h
bounce_queue_lifetime = 1h
maximal_backoff_time = 15m
minimal_backoff_time = 5m
queue_run_delay = 5m


##
## TLS Einstellungen
## Quelle: https://ssl-config.mozilla.org/#server=postfix&version=3.4.8&config=intermediate&openssl=1.1.1d&guideline=5.4
##

### Allgemein
tls_preempt_cipherlist = no
tls_ssl_options = NO_COMPRESSION
tls_medium_cipherlist = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

### Ausgehende SMTP-Verbindungen (Postfix als Sender)
smtp_tls_security_level = dane
smtp_dns_support_level = dnssec
## smtp_tls_policy_maps = proxy:mysql:/etc/postfix/sql/tls-policy.cf
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_ciphers = medium
smtp_tls_CAfile = /etc/ssl/certs/ldap.intern.example.com-CA.pem
compatibility_level=2

### Eingehende SMTP-Verbindungen
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_ciphers = medium
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_cert_file=/etc/ssl/certs/mail.intern.example.com.crt
smtpd_tls_key_file=/etc/ssl/private/mail.intern.example.com.key
smtpd_tls_dh1024_param_file = /etc/postfix/dh2048.pem


##
## Lokale Mailzustellung an Dovecot
##

virtual_transport = lmtp:unix:private/dovecot-lmtp
mailbox_transport = lmtp:unix:private/dovecot-lmtp

##
## Spamfilter und DKIM-Signaturen via Rspamd
##

smtpd_milters = inet:localhost:11332
non_smtpd_milters = inet:localhost:11332
milter_protocol = 6
milter_mail_macros =  i {mail_addr} {client_addr} {client_name} {auth_authen}
milter_default_action = accept



##
## Server Restrictions für Clients, Empfänger und Relaying
## (im Bezug auf S2S-Verbindungen. Mailclient-Verbindungen werden in master.cf im Submission-Bereich konfiguriert)
##

### Bedingungen, damit Postfix als Relay arbeitet (für Clients)
smtpd_relay_restrictions =      reject_non_fqdn_recipient
                                reject_unknown_recipient_domain
                                permit_mynetworks
                                reject_unauth_destination


### Bedingungen, damit Postfix ankommende E-Mails als Empfängerserver entgegennimmt (zusätzlich zu relay-Bedingungen)
### check_recipient_access prüft, ob ein account sendonly ist
## smtpd_recipient_restrictions = check_recipient_access proxy:mysql:/etc/postfix/sql/recipient-access.cf


### Bedingungen, die SMTP-Clients erfüllen müssen (sendende Server)
## smtpd_client_restrictions =     permit_mynetworks
##                                 check_client_access hash:/etc/postfix/without_ptr
##                                 reject_unknown_client_hostname


### Wenn fremde Server eine Verbindung herstellen, müssen sie einen gültigen Hostnamen im HELO haben.
smtpd_helo_required = yes
smtpd_helo_restrictions =   permit_mynetworks
                            reject_invalid_helo_hostname
                            reject_non_fqdn_helo_hostname
                            reject_unknown_helo_hostname

# Clients blockieren, wenn sie versuchen zu früh zu senden
smtpd_data_restrictions = reject_unauth_pipelining


##
## Restrictions für MUAs (Mail user agents)
##

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


##
## LDAP Abfragen
##

smtpd_sender_login_maps = ldap:/etc/postfix/ldap/sender_login_maps.cf
virtual_mailbox_maps = ldap:/etc/postfix/ldap/virtual_mailbox_maps.cf
virtual_alias_maps = ldap:/etc/postfix/ldap/virtual_forward_maps.cf ldap:/etc/postfix/ldap/virtual_group_maps.cf
virtual_mailbox_domains = ldap:/etc/postfix/ldap/virtual_mailbox_domains.cf
local_recipient_maps = $virtual_mailbox_maps

##
## Sonstiges
##

### Maximale Größe der gesamten Mailbox (soll von Dovecot festgelegt werden, 0 = unbegrenzt)
mailbox_size_limit = 0

### Maximale Größe eingehender E-Mails in Bytes (50 MB)
message_size_limit = 52428800

### Keine System-Benachrichtigung für Benutzer bei neuer E-Mail
biff = no

### Nutzer müssen immer volle E-Mail Adresse angeben - nicht nur Hostname
append_dot_mydomain = no

### Trenn-Zeichen für "Address Tagging"
recipient_delimiter = +

### Keine Rückschlüsse auf benutzte Mailadressen zulassen
disable_vrfy_command = yes
alias_maps = hash:/etc/aliases
master.cf

Code: Alles auswählen

root@ldap:~# cat /etc/postfix/master.cf
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
###
### SMTP-Serverbindungen aus dem Internet
### Authentifizuerung hier nicht erlaubt (Anmeldung nur via smtps/submission!)
smtp      inet  n       -       n       -       1       smtpd -v    
    -o smtpd_sasl_auth_enable=no
###
### SMTPS Service (Submission mit implizitem TLS - ohne STARTTLS) - Port 465
### Für Mailclients gelten andere Regeln, als für andere Mailserver (siehe smtpd_ in main.cf)
###
smtps     inet  n       -       y       -       -       smtpd
    -o syslog_name=postfix/smtps
    -o smtpd_tls_wrappermode=yes
    -o smtpd_tls_security_level=encrypt
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_sasl_type=dovecot
    -o smtpd_sasl_path=private/auth
    -o smtpd_sasl_security_options=noanonymous
    -o smtpd_client_restrictions=$mua_client_restrictions
    -o smtpd_sender_restrictions=$mua_sender_restrictions
    -o smtpd_relay_restrictions=$mua_relay_restrictions
    -o milter_macro_daemon_name=ORIGINATING
    -o smtpd_sender_login_maps=ldap:/etc/postfix/ldap/sender_login_maps.cf
    -o smtpd_helo_required=no
    -o smtpd_helo_restrictions=
    -o cleanup_service_name=submission-header-cleanup
###
### Submission-Zugang für Clients (mit STARTTLS - für Rückwärtskompatibilität) - Port 587
###
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_type=dovecot
    -o smtpd_sasl_path=private/auth
    -o smtpd_sasl_security_options=noanonymous
    -o smtpd_client_restrictions=$mua_client_restrictions
    -o smtpd_sender_restrictions=$mua_sender_restrictions
    -o smtpd_relay_restrictions=$mua_relay_restrictions
    -o milter_macro_daemon_name=ORIGINATING
    -o smtpd_sender_login_maps=ldap:/etc/postfix/ldap/sender_login_maps.cf
    -o smtpd_helo_required=no
    -o smtpd_helo_restrictions=
    -o cleanup_service_name=submission-header-cleanup
###
### Weitere wichtige Dienste für den Serverbetrieb
###
pickup    unix  n       -       y       60      1       pickup
cleanup   unix  n       -       y       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
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
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
###
### Cleanup-Service um MUA header zu entfernen
###
submission-header-cleanup unix n - n    -       0       cleanup
    -o header_checks=regexp:/etc/postfix/submission_header_cleanup
Ich hoffe das ich Euch nicht mit zu vielen Log's versorgt habe?
Über einen Tipp was ich machen kann würe ich mich freuen.
Gruß von Stefan Harbich

Benutzeravatar
oln
Beiträge: 25
Registriert: 05.01.2021 09:41:24

Re: OpenLDAP Dovecot Postfix

Beitrag von oln » 13.04.2021 13:46:39

Moin,
ich habe bei mir noch ein "smtpd_tls_session_cache_timeout = 3600s" drin und habe diese Probleme nicht.
Gruß Ole

Antworten