Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Postfix checkt niet voor authenticated users

Pagina: 1
Acties:

Vraag


  • UPPERKEES
  • Registratie: Maart 2007
  • Niet online
Ik heb al een paar weken een Postfix server draaien die Dovecot gebruikt voor IMAP en (blijkbaar onvolledig) SMTP authenticatie. Het maakt blijkbaar niet uit wat voor username/password mijn systemen in hun Postfix client hebben staan, ze kunnen altijd iets versturen. Dus iedereen kan dat blijkbaar doen... Het is vast ergens een reject rule aanpassen/toevoegen, maar ik kan hem maar niet vinden... Mochten er andere opmerkingen zijn over de config dan hoor ik dat ook graag!

For the record, systemen buiten $mynetworks kunnen ook gewoon mailen zonder authenticatie.

De server.

main.cf
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# postconf -nf               
alias_database = hash:/etc/aliases           
alias_maps = hash:/etc/aliases               
append_dot_mydomain = no                     
biff = no                                    
compatibility_level = 2                      
config_directory = /etc/postfix              
delay_warning_time = 4h                      
disable_vrfy_command = yes                   
inet_interfaces = localhost, 10.1.0.1        
inet_protocols = ipv4                        
lmtp_tls_protocols = TLSv1.2                 
local_recipient_maps = proxy:unix:passwd.byname $alias_maps                                
milter_default_action = accept               
myhostname = mail.server.nl                 
mynetworks = localhost, 10.1.0.0/24, 10.1.1.0/24                                           
myorigin = $mydomain                         
non_smtpd_milters = $smtpd_milters           
policy-spf_time_limit = 3600s                
readme_directory = no                        
recipient_delimiter = +                      
relayhost =                                  
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt                                       
smtp_tls_cert_file = /etc/letsencrypt/live/$mydomain/fullchain.pem                         
smtp_tls_key_file = /etc/letsencrypt/live/$mydomain/privkey.pem                            
smtp_tls_loglevel = 1                        
smtp_tls_protocols = TLSv1.2                 
smtp_tls_security_level = may                
smtp_tls_session_cache_database = btree:$data_directory/smtp_scache                        
smtpd_banner = $myhostname                   
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated,                  
    reject_unknown_client_hostname, reject_rbl_client zen.spamhaus.org,                    
    reject_rhsbl_reverse_client dbl.spamhaus.org, reject_rhsbl_helo                        
    dbl.spamhaus.org, reject_rhsbl_sender dbl.spamhaus.org                                 
smtpd_data_restrictions = reject_unauth_pipelining                                         
smtpd_helo_required = yes                    
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, permit               
smtpd_milters = inet:localhost:8891          
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,               
    reject_unauth_destination, reject_unlisted_recipient,                                  
    reject_invalid_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient,            
    reject_unknown_sender_domain, reject_unauth_pipelining,                                
    reject_unauth_destination, reject_rbl_client zen.spamhaus.org,                         
    reject_rhsbl_reverse_client dbl.spamhaus.org, reject_rhsbl_helo                        
    dbl.spamhaus.org, reject_rhsbl_sender dbl.spamhaus.org check_policy_service            
    unix:private/policy-spf, check_policy_service inet:localhost:10023, permit             
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated,                   
    reject_unauth_destination                
smtpd_sasl_auth_enable = yes                 
smtpd_sasl_path = private/auth               
smtpd_sasl_security_options = noanonymous    
smtpd_sasl_type = dovecot                    
smtpd_sender_login_maps = $virtual_alias_maps                                              
smtpd_sender_restrictions = reject_unknown_sender_domain                                   
smtpd_tls_auth_only = yes                    
smtpd_tls_cert_file = /etc/letsencrypt/live/$mydomain/fullchain.pem                        
smtpd_tls_dh1024_param_file = $config_directory/dh2048.pem                                 
smtpd_tls_key_file = /etc/letsencrypt/live/$mydomain/privkey.pem                           
smtpd_tls_loglevel = 1                       
smtpd_tls_mandatory_ciphers = high           
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5, DES, ADH, RC4, PSD, SRP, 3DES,           
    eNULL                                    
smtpd_tls_mandatory_protocols = TLSv1.2      
smtpd_tls_protocols = TLSv1.2                
smtpd_tls_security_level = may               
smtpd_tls_session_cache_database = btree:$data_directory/smtpd_scache                      
smtpd_use_tls = yes                          
strict_rfc821_envelopes = yes                
tls_preempt_cipherlist = yes                 
unknown_address_reject_code = 554            
unknown_client_reject_code = 554             
unknown_hostname_reject_code = 554           
virtual_alias_maps = hash:$config_directory/$mydomain/virtual_alias_maps.cf                
virtual_gid_maps = static:997                
virtual_mailbox_base = /var/vmail            
virtual_mailbox_domains =                    
    hash:$config_directory/$mydomain/virtual_mailbox_domains.cf                            
virtual_mailbox_maps = hash:$config_directory/$mydomain/virtual_mailbox_maps.cf            
virtual_transport = lmtp:unix:private/dovecot-lmtp                                         
virtual_uid_maps = static:997


master.cf
code:
1
2
3
4
5
6
7
8
# postconf -Pf
submission/inet/smtpd_recipient_restrictions =
    reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
submission/inet/smtpd_sasl_auth_enable = yes
submission/inet/smtpd_sasl_path = private/auth
submission/inet/smtpd_sasl_security_options = noanonymous
submission/inet/smtpd_sasl_type = dovecot
submission/inet/smtpd_tls_security_level = encrypt


dovecot snippets
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
passdb {                                                                                                                                                                                                                                                                                                                                                                     
  args = scheme=SHA512-CRYPT username_format=%u /etc/dovecot/%d/passwd                                                                                                                                                                                                                                                                                                       
  driver = passwd-file                                                                                                                                                                                                                                                                                                                                                       
}                                                                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
service {                                                                                                                                                                                                                                                                                                                                                                    
  unix_listener {                                                                                                                                                                                                                                                                                                                                                            
    group = postfix                                                                                                                                                                                                                                                                                                                                                          
    mode = 0660                                                                                                                                                                                                                                                                                                                                                              
    user = postfix                                                                                                                                                                                                                                                                                                                                                           
    path = /var/spool/postfix/private/auth                                                                                                                                                                                                                                                                                                                                   
  }
  name = auth
}

service {
  inet_listener {
    port = 0
    name = imap
  }
  inet_listener {
    port = 993
    ssl = yes
    name = imaps
  }
  name = imap-login
}

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

userdb {
  args = uid=vmail gid=nogroup home=/var/vmail/%d/%n
  driver = static
}

disable_plaintext_auth = yes
auth_mechanisms = plain


De client:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ postconf -nf           
compatibility_level = 2                      
inet_interfaces =                            
inet_protocols = ipv4                        
myhostname = user.home.lan                
mynetworks =                                 
smtp_sasl_auth_enable = yes                  
smtp_sasl_password_maps = hash:/etc/postfix/passwd                              
smtp_sasl_security_options = noanonymous     
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt                                         
smtp_tls_mandatory_ciphers = high            
smtp_tls_mandatory_protocols = TLSv1.2       
smtp_tls_protocols = TLSv1.2                 
smtp_tls_security_level = may                
smtp_use_tls = yes

Alle reacties


  • GlowMouse
  • Registratie: November 2002
  • Niet online
n/m

[ Voor 97% gewijzigd door GlowMouse op 01-11-2017 14:36 ]


  • UPPERKEES
  • Registratie: Maart 2007
  • Niet online
GlowMouse schreef op woensdag 1 november 2017 @ 14:34:
[...]

Vanaf werk netwerk test je of er een wachtwoord wordt vereist?
Ook buiten $mynetworks ;) Staat ook in de intro tekst :)

code:
1
2
# postconf -x mynetworks                                                                                                                                        
mynetworks = localhost, 10.1.0.0/24, 10.1.1.0/24

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Je smtpd_recipient_restrictions eindigt met "permit", dus als geen van de "rejects" matcht wordt de mail doorgelaten. Die "permit" hoort daar niet, maar als je hem weglaat hebben alle rejects ook geen zin. Als je geen mail wilt sturen naar spamdomeinen, moet je eerst alle rejects neerzetten, en dan pas permit_mynetworks, permit_sasl_authenticated.

[ Voor 21% gewijzigd door GlowMouse op 01-11-2017 14:49 ]


  • UPPERKEES
  • Registratie: Maart 2007
  • Niet online
GlowMouse schreef op woensdag 1 november 2017 @ 14:48:
Je smtpd_recipient_restrictions eindigt met "permit", dus als geen van de "rejects" matcht wordt de mail doorgelaten. Die "permit" hoort daar niet, maar als je hem weglaat hebben alle rejects ook geen zin. Als je geen mail wilt sturen naar spamdomeinen, moet je eerst alle rejects neerzetten, en dan pas permit_mynetworks, permit_sasl_authenticated.
Ik heb die 'permit' hier hier volgens mij hier vandaan gehaald. Maakt het echt veel uit als je eerst de rejects doet voor spam en dan permit_mynetworks en permit_sasl_authenticated doet? De permit_mynetworks en permit_sasl_authenticated bevat een korte lijst van wat sowieso toegestaan is. Spam domeinen zitten niet in $mynetworks of in mijn Dovecot passwd file, dus kan toch prima als eerst?

Heb je misschien een voorbeeld voor een strakkere config? Eindigen met een reject bijvoorbeeld, is dat hoe het zou moeten? Want dan krijg ik "Recipient address rejected: Access denied", wat opgelost kan worden met een access list waarschijnlijk. Maar eerst maar even een sanity check of een reject als laatste regel verstandig is.

Edit: Hier vind ik ook die permit als laatste rule.

[ Voor 4% gewijzigd door UPPERKEES op 01-11-2017 15:26 ]


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Ik ben denk ik toch wat te snel geweest.
http://www.postfix.org/SMTPD_ACCESS_README.html
Each restriction list is evaluated from left to right until some restriction produces a result of PERMIT, REJECT or DEFER (try again later). The end of each list is equivalent to a PERMIT result.
Als je de eerste vier regels van smtpd_recipient_restrictions bekijkt, zou dat al tot een reject moeten leiden:
permit_mynetworks, permit_sasl_authenticated, # mynetworks/ingelogd accepteren
reject_unauth_destination, # verwerp tenzij lokaal of relay
reject_unlisted_recipient, # verwerp tenzij lokaal of relay
De laatste permit is dus voor mails van buitenaf door niet-ingelogde users die mail naar of via jouw server sturen. Met de configuratie lijkt niets mis te zijn.
Loop alle configopties die onder reject_unauth_destination worden genoemd eens na, en zet anders de logging van postfix wat hoger om te zien op welke regel er wordt gematcht.

  • UPPERKEES
  • Registratie: Maart 2007
  • Niet online
Anyone else? :)

  • UPPERKEES
  • Registratie: Maart 2007
  • Niet online
Nog een laatste poging. Wat meer checken heeft mij geleidt tot de conclusie dat het ligt aan de manier waarop mijn Posfix clients authenticaten met mijn Postfix server (via Dovecot).

Dit staat nu in mijn main.cf, een reject in plaats van een permit.
code:
1
2
3
4
5
6
7
8
smtpd_client_restrictions = permit_mynetworks,
        reject_unknown_client_hostname,
        reject_rbl_client zen.spamhaus.org,
        reject_rhsbl_reverse_client dbl.spamhaus.org,
        reject_rhsbl_helo dbl.spamhaus.org,
        reject_rhsbl_sender dbl.spamhaus.org,
        permit_sasl_authenticated,
        reject


Waardoor ik de volgende logs zie in het client restrictions blok.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: >>> START Client host RESTRICTIONS <<<       
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=permit_mynetworks                                                                                                  
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: match_hostname: mynetworks: reverse-ip.ftth.glasoperator.nl ~? localhost                                                                
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: match_hostaddr: mynetworks: client_ip ~? localhost                                                                                      
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: match_hostname: mynetworks: reverse-ip.ftth.glasoperator.nl ~? 10.1.0.0/24                                 
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: match_hostaddr: mynetworks: client_ip ~? 10.1.0.0/24                                                                                    
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: match_hostname: mynetworks: reverse-ip.ftth.glasoperator.nl ~? 10.1.1.0/24                                                              
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: match_hostaddr: mynetworks: client_ip ~? 10.1.1.0/24                                                                                    
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: match_list_match: reverse-ip.ftth.glasoperator.nl: no match                                                                             
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: match_list_match: client_ip: no match                                                                                                   
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=permit_mynetworks status=0                                                                                         
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_unknown_client_hostname                                                                                     
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: reject_unknown_client: reverse-ip.ftth.glasoperator.nl client_ip                                                                        
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_unknown_client_hostname status=0                                                                            
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_rbl_client                                                                                                  
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: reject_rbl_addr: Client host client_ip                                                                                                  
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: ctable_locate: move existing entry key remote_ip.zen.spamhaus.org                                                                    
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_rbl_client status=0                                                                                         
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_rhsbl_reverse_client                                                                                        
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: reject_rbl_domain: dbl.spamhaus.org reverse-ip.ftth.glasoperator.nl                                                                     
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: ctable_locate: move existing entry key reverse-ip.ftth.glasoperator.nl.dbl.spamhaus.org                                                 
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_rhsbl_reverse_client status=0                                                                               
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_rhsbl_helo       
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: reject_rbl_domain: dbl.spamhaus.org mydomain.nl                                                                                         
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: ctable_locate: move existing entry key mydomain.nl.dbl.spamhaus.org                                                                     
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_rhsbl_helo status=0                                                                                         
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_rhsbl_sender                                                                                                
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject_rhsbl_sender status=0                                                                                       
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=permit_sasl_authenticated                                                                                          
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=permit_sasl_authenticated status=0                                                                                 
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject                  
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: NOQUEUE: reject: RCPT from reverse-ip.ftth.glasoperator.nl[client_ip]: 554 5.7.1 <remote_ip.ftth.glasoperator.nl[client_ip]>:
Client host rejected: Access denied; from=<> to=<user@mydomain.nl> proto=ESMTP helo=<mydomain.nl>                                                                                 
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: generic_checks: name=reject status=2                                                                                                    
Nov  5 16:24:06 mydomain postfix/smtpd[5005]: >>> END Client host RESTRICTIONS <<<


Mijn mail client op mijn mobiel krijgt wel de "name=permit_sasl_authenticated status=1" en gaat vervolgens verder met het checken van de andere condities en verstuurt daarna zonder problemen de email. Het gaat dus klaarblijkelijk mis bij de authenticatie van de Postfix client naar de Postfix server waar Dovecot wel goed geconfigureerd is, dus dat lijkt niet het probleem te zijn. Daarom ben ik erg benieuwd naar Postfix client configuraties van anderen die authenticaten met een Postfix server via Dovecot. Want mijn config hieronder is blijkbaar onvoldoende, online wordt ik maar niks wijzer... Met wat voorbeelden wordt ik misschien wat wijzer, of als iemand gelijk al ziet wat er mis is dan is dat ook prima natuurlijk :)

In de passwd file staat trouwens dezelfde username/password als in de mail client op mijn telefoon waar het wel op werkt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
inet_interfaces = localhost
inet_protocols = ipv4
myhostname = hostname.lan
mynetworks =
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_mandatory_ciphers = high
smtp_tls_mandatory_protocols = TLSv1.2
smtp_tls_protocols = TLSv1.2
smtp_tls_security_level = may
smtp_use_tls = yes

  • UPPERKEES
  • Registratie: Maart 2007
  • Niet online
Deze null-client config heeft het gefixt, relay domain moest ik nog toevoegen, ik ging ervan uit dat het SMTP adres en poortnummer in de sasl_passwd file voldoende was. In de client_restrictions staat nu de laatste regel gewoon op reject en dat houdt ook unauth attempts tegen. Clients binnen mynetworks kunnen zonder auth mail verzenden.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
compatibility_level = 2                      
inet_interfaces = loopback-only              
mydomain = {{ domain }}                        
myhostname = {{ hostname }}                        
mynetworks =                                 
myorigin = $mydomain                         
relayhost = [mail.$mydomain]:submission      
smtp_sasl_auth_enable = yes                  
smtp_sasl_password_maps = hash:/etc/postfix/$mydomain/passwd                               
smtp_sasl_security_options = noanonymous     
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt                                         
smtp_tls_mandatory_ciphers = high            
smtp_tls_mandatory_protocols = TLSv1.2       
smtp_tls_protocols = TLSv1.2                 
smtp_tls_security_level = may                
smtp_use_tls = yes
Pagina: 1