Puncte:1

Postfix / Dovecot nu poate trimite sau primi e-mailuri în Ubuntu 20

drapel de

Am generat fișiere ssl folosind letsencrypt și totul este instalat și configurat, dar IMAP și SMTP nu funcționează. Ceea ce pot găsi din fișierul /var/log/mail.log este această eroare:

dovecot: imap-login: Deconectat (deconectat înainte ca auth-ul să fie gata, așteptat 0 secunde): user=<>, TLS handshaking: SSL_accept() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert certificate: SSL alert number 42

Nu există niciun jurnal pentru eșecul SMTP.

/etc/postfix/main.cf

# Consultați /usr/share/postfix/main.cf.dist pentru o versiune comentată, mai completă


# Specific Debian: Specificarea unui nume de fișier va provoca primul
# rând din acel fișier care va fi folosit ca nume. Valoarea implicită Debian
# este /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = nu

# atașarea domeniului .este treaba MUA.
append_dot_mydomain = nr

# Anulați comentariile următoarei rânduri pentru a genera avertismente „e-mail întârziat”.
#delay_warning_time = 4h

readme_directory = nr

# Consultați http://www.postfix.org/COMPATIBILITY_README.html -- implicit la 2 pe
# instalări noi.
compatibility_level = 2



# Parametri TLS
smtpd_tls_cert_file=/etc/letsencrypt/live/domain.net/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/domain.net/privkey.pem
smtpd_tls_security_level=mai

smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=mai
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache


smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.domain.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, domain.net, albastru, localhost.localdomain, localhost
relayhost = 
rețelele mele = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
cutie_poștală_size_limit = 0
destinatar_delimiter = +
inet_interfaces = all
inet_protocols = all

mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = nr

# Configurația milter
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

10-ssl.conf

##
## Setări SSL
##

# Suport SSL/TLS: da, nu, necesar. <doc/wiki/SSL.txt>
ssl = necesar

# Certificat X.509 SSL/TLS codificat PEM și cheie privată. Sunt deschise înainte
# eliminarea privilegiilor root, așa că păstrați fișierul cheie necitit de oricine, în afară de
# rădăcină. Doc/mkcert.sh inclus poate fi folosit pentru a genera cu ușurință auto-semnat
# certificat, asigurați-vă că actualizați domeniile în dovecot-openssl.cnf
ssl_cert = </etc/letsencrypt/live/domain.net/fullchain.pem
ssl_key = </etc/letsencrypt/live/domain.net/privkey.pem

# Dacă fișierul cheie este protejat prin parolă, dați parola aici. Alternativ
# dă-l când pornești dovecot cu parametrul -p. Deoarece acest fișier este adesea
# care poate fi citită în întreaga lume, vă recomandăm să plasați această setare într-o altă setare
# root deținut fișierul 0600 folosind ssl_key_password = <cale.
#ssl_key_password =

# Autoritate de certificare de încredere codificată PEM. Setați acest lucru numai dacă intenționați să îl utilizați
# ssl_verify_client_cert=yes. Fișierul trebuie să conțină certificatul (certificatele) CA
# urmat de CRL-urile care se potrivesc. (de exemplu, ssl_ca = </etc/ssl/certs/ca.pem)
#ssl_ca = 

# Solicitați ca verificarea CRL să reușească pentru certificatele client.
#ssl_require_crl = da

# Director și/sau fișier pentru certificate SSL CA de încredere. Acestea sunt folosite numai
# când Dovecot trebuie să acționeze ca un client SSL (de exemplu, backend imapc sau
# serviciu de trimitere). Directorul este de obicei /etc/ssl/certs în
# Sisteme bazate pe Debian și fișierul este /etc/pki/tls/cert.pem în
# Sisteme bazate pe RedHat.
ssl_client_ca_dir = /etc/ssl/certs
#ssl_client_ca_file =

# Necesită un certificat valid când te conectezi la un server la distanță
#ssl_client_require_valid_cert = da

# Solicitați clientului să trimită un certificat. Dacă doriți să o solicitați, setați
# auth_ssl_require_client_cert=da în secțiunea de autentificare.
#ssl_verify_client_cert = nr

# Ce câmp din certificat să folosești pentru numele de utilizator. commonName și
# x500UniqueIdentifier sunt alegerile obișnuite. De asemenea, va trebui să setați
# auth_ssl_username_from_cert=yes.
#ssl_cert_username_field = commonName

# Parametri SSL DH
# Generați parametri noi cu `openssl dhparam -out /etc/dovecot/dh.pem 4096`
# Sau migrați din fișierul vechi ssl-parameters.dat cu comanda dovecot
# dă la pornire când ssl_dh este dezactivat.
ssl_dh = </usr/share/dovecot/dh.pem

# Versiunea minimă a protocolului SSL de utilizat. Valorile potențial recunoscute sunt SSLv3,
# TLSv1, TLSv1.1 și TLSv1.2, în funcție de versiunea OpenSSL utilizată.
#ssl_min_protocol = TLSv1

# Cifre SSL de utilizat, valoarea implicită este:
#ssl_cipher_list = ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
# Pentru a dezactiva DH non-EC, utilizați:
#ssl_cipher_list = ALL:!DH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@ PUTERE

# Listă de curbe eliptice separate prin două puncte de utilizat. Valoare goală (prestabilită)
# înseamnă folosirea setărilor implicite din biblioteca SSL. P-521:P-384:P-256 ar fi un
# exemplu de valoare validă.
#ssl_curve_list =

# Preferați ordinea de criptare a serverului decât a clientului.
#ssl_prefer_server_ciphers = da

# Dispozitiv criptografic SSL de utilizat, pentru valori valide, rulați „openssl engine”
#ssl_crypto_device =

# Opțiuni suplimentare SSL. Opțiunile acceptate în prezent sunt:
# compresie - Activați compresia.
# no_ticket - Dezactivează biletele de sesiune SSL.
#ssl_options =
ssl_min_protocol = TLSv1.2

Gazdă virtuală Apache mail.domain.net.conf

<VirtualHost *:80>

  ServerName mail.domain.net

  DocumentRoot /var/www/html/



  ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log

  CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined



  <Directory />

    Options FollowSymLinks

    AllowOverride All

  </Directory>



  <Directory /var/www/html/>

    Options FollowSymLinks MultiViews

    AllowOverride All

    Order allow,deny

    allow from all

  </Directory>



</VirtualHost>


<VirtualHost *:443>

  ServerName mail.domain.net

  DocumentRoot /var/www/html



  ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log

  CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined



  <Directory />

    Options FollowSymLinks

    AllowOverride All

  </Directory>



  <Directory /var/www/html/>

    Options FollowSymLinks MultiViews

    AllowOverride All

    Order allow,deny

    allow from all

  </Directory>

  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/domain.net/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/domain.net/privkey.pem

</VirtualHost>

porumbel.conf

## Fișierul de configurare Dovecot

# Dacă vă grăbiți, consultați http://wiki2.dovecot.org/QuickConfiguration

# Comanda „doveconf -n” oferă o ieșire curată a setărilor modificate. Foloseste-l
# în loc să copiați și să lipiți fișierele când postați pe lista de corespondență Dovecot.

Caracterul # „#” și tot ce urmează este tratat ca comentarii. Spații suplimentare
# și filele sunt ignorate. Dacă doriți să utilizați oricare dintre acestea în mod explicit, puneți
# valoare în ghilimele, de exemplu: cheie = "# caracter și spații albe în urmă"

# Majoritatea setărilor (dar nu toate) pot fi înlocuite de diferite protocoale și/sau
# IP-uri sursă/destinație prin plasarea setărilor în secțiuni, de exemplu:
# protocol imap { }, local 127.0.0.1 { }, la distanță 10.0.0.0/8 { }

# Valorile implicite sunt afișate pentru fiecare setare, nu este necesar să anulați comentariile
# acestea. Acestea sunt însă excepții de la aceasta: fără secțiuni (de exemplu, spațiu de nume {})
# sau setările pluginului sunt adăugate în mod implicit, acestea sunt enumerate doar ca exemple.
# Căile sunt, de asemenea, doar exemple, valorile implicite reale fiind bazate pe configurare
# Opțiuni. Căile enumerate aici sunt pentru configure --prefix=/usr
# --sysconfdir=/etc --localstatedir=/var

# Activați protocoalele instalate
protocoale = imap lmtp
!include_try /usr/share/dovecot/protocols.d/*.protocol

# O listă separată prin virgulă de IP-uri sau gazde unde să asculte pentru conexiuni. 
# „*” ascultă în toate interfețele IPv4, „::” ascultă în toate interfețele IPv6.
# Dacă doriți să specificați porturi non-implicite sau ceva mai complex,
# editați conf.d/master.conf.
#ascultă = *, ::

# Directorul de bază unde se stochează datele de rulare.
#base_dir = /var/run/dovecot/

# Numele acestei instanțe. În configurarea cu mai multe instanțe doveadm și alte comenzi
# poate folosi -i <nume_instanță> pentru a selecta ce instanță este utilizată (o alternativă
# la -c <config_path>). Numele instanței este, de asemenea, adăugat la procesele Dovecot
# în ieșirea ps.
#instance_name = porumbel

# Mesaj de salut pentru clienți.
#login_greeting = Porumbelul gata.

# Listă separată de spații de intervale de rețea de încredere. Conexiuni de la acestea
# IP-urilor au voie să-și suprascrie adresele și porturile IP (pentru înregistrare și
# pentru verificări de autentificare). disable_plaintext_auth este, de asemenea, ignorat pentru
# aceste rețele. De obicei, ați specifica aici serverele proxy IMAP.
#login_trusted_networks =

# Lista separată de spații de socket-uri de verificare a accesului de conectare (de exemplu, tcpwrap)
#login_access_sockets = 

# Cu proxy_maybe=yes dacă destinația proxy se potrivește cu oricare dintre aceste IP-uri, nu faceți acest lucru
# proxy. Acest lucru nu este necesar în mod normal, dar poate fi util dacă destinația
# IP este de ex. IP-ul unui echilibrator de încărcare.
#auth_proxy_self =

# Afișați mai multe titluri detaliate ale proceselor (în ps). În prezent arată numele de utilizator și
# Adresa IP. Util pentru a vedea cine utilizează de fapt procesele IMAP
# (de exemplu, căsuțe poștale partajate sau dacă același uid este folosit pentru mai multe conturi).
#verbose_proctitle = nr

# Ar trebui să se oprească toate procesele atunci când procesul principal Dovecot se închide.
# Setarea la „nu” înseamnă că Dovecot poate fi actualizat fără
# forțarea conexiunilor client existente să se închidă (deși asta ar putea fi și
# o problemă dacă upgrade-ul este de ex. din cauza unei remedieri de securitate).
#shutdown_clients = da

# Dacă nu este zero, rulați comenzi de e-mail prin atâtea conexiuni la serverul doveadm,
# în loc să le rulați direct în același proces.
#doveadm_worker_count = 0
# Socket UNIX sau host:port folosit pentru conectarea la serverul doveadm
#doveadm_socket_path = doveadm-server

# Lista de variabile de mediu separate prin spații care sunt păstrate pe Dovecot
# pornire și transmis tuturor proceselor sale secundare. De asemenea, puteți oferi
# perechi cheie=valoare pentru a seta întotdeauna anumite setări.
#import_environment = TZ

##
## Setări server dicționar
##

# Dicționarul poate fi folosit pentru a stoca liste cheie=valoare. Acesta este folosit de mai mulți
# pluginuri. Dicționarul poate fi accesat fie direct, fie prin a
# server de dicționar. Următorul bloc dict mapează numele dicționarului la URI-uri
# când este utilizat serverul. Acestea pot fi apoi referite folosind URI-uri în format
# "proxy::<nume>".

dict {
  #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}

# Majoritatea configurației reale sunt incluse mai jos. Numele fișierelor sunt
# mai întâi sortat după valoarea lor ASCII și analizat în această ordine. Prefixele 00
# în numele fișierelor sunt menite să faciliteze înțelegerea ordinii.
!include conf.d/*.conf

# Un fișier de configurare poate încerca, de asemenea, să fie inclus fără a da o eroare dacă
# nu a fost găsit:
!include_try local.conf

10-auth.conf

##
## Procese de autentificare
##

# Dezactivează comanda LOGIN și toate celelalte autentificări în text simplu, cu excepția cazului în care
# Se utilizează SSL/TLS (capacitate LOGINDISABLED). Rețineți că dacă IP-ul de la distanță
# se potrivește cu IP-ul local (adică vă conectați de pe același computer),
# conexiunea este considerată sigură, iar autentificarea text simplu este permisă.
# Vezi și ssl=setarea necesară.
disable_plaintext_auth = da

# Dimensiunea memoriei cache de autentificare (de exemplu, 10 M). 0 înseamnă că este dezactivat. Rețineți că
# bsdauth, PAM și vpopmail necesită cache_key să fie setat pentru ca stocarea să fie utilizată.
#auth_cache_size = 0
# Timp de trăit pentru datele stocate în cache. După expirarea TTL, înregistrarea în cache este nr
# folosit mai mult, *cu excepția* dacă căutarea bazei de date principală returnează o eroare internă.
# De asemenea, încercăm să gestionăm automat modificările parolei: Dacă utilizatorul este anterior
# autentificarea a avut succes, dar aceasta nu a fost, cache-ul nu este folosit.
# Deocamdată funcționează numai cu autentificarea text simplu.
#auth_cache_ttl = 1 oră
# TTL pentru accesări negative (utilizatorul nu a fost găsit, parola nepotrivită).
# 0 dezactivează complet stocarea lor în cache.
#auth_cache_negative_ttl = 1 oră

# Lista de domenii separate prin spații pentru mecanismele de autentificare SASL care au nevoie
# lor. Îl puteți lăsa necompletat dacă nu doriți să acceptați mai multe tărâmuri.
# Mulți clienți îl folosesc pur și simplu pe primul listat aici, așa că păstrați domeniul implicit
# în primul rând.
#auth_realms =

# Tărâm/domeniu implicit de utilizat dacă nu a fost specificat niciunul. Acesta este folosit pentru ambele
# tărâmuri SASL și adăugarea @domain la numele de utilizator în autentificări în text simplu.
#auth_default_realm = 

# Lista de caractere permise în numele de utilizator. Dacă numele de utilizator dat de utilizator conține
# un caracter care nu este listat aici, autentificarea eșuează automat. Asta e doar
# o verificare suplimentară pentru a vă asigura că utilizatorul nu poate exploata nicio posibilă evadare a citatului
# vulnerabilități cu baze de date SQL/LDAP. Dacă doriți să permiteți toate caracterele,
# setați această valoare la gol.
#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@

# Traducerea caracterelor numelui de utilizator înainte de a fi căutat din baze de date. The
# valoarea conține serii de la -> la caractere. De exemplu, „#@/@” înseamnă
# că caracterele „#” și „/” sunt traduse în „@”.
#auth_username_translation =

# Formatarea numelui de utilizator înainte de a fi căutat din baze de date. Poți să folosești
# variabilele standard de aici, de ex. %Lu ar fi numele de utilizator cu minuscule, %n ar face
# abandonați domeniul dacă a fost dat, sau „%n-AT-%d” ar schimba „@” în
# „-AT-”. Această traducere se face după modificările auth_username_translation.
auth_username_format = %n

# Dacă doriți să permiteți utilizatorilor master să se autentifice, specificând masterul
# nume de utilizator în șirul de nume de utilizator normal (adică nu se utilizează mecanismul SASL
# suport pentru acesta), puteți specifica aici caracterul separator. Formatul
# este atunci <username><separator><master username>. UW-IMAP folosește „*” ca
# separator, așa că ar putea fi o alegere bună.
#auth_master_user_separator =

# Nume de utilizator de utilizat pentru utilizatorii care se conectează cu mecanism SASL ANONIM
#auth_anonymous_username = anonim

# Numărul maxim de procese de lucru pentru autorizarea porumbelului. Sunt obișnuiți să execute
# blocarea interogărilor passdb și userdb (de ex. MySQL și PAM). Ei sunt
# creat și distrus automat după cum este necesar.
#auth_worker_max_count = 30

# Nume gazdă de utilizat în numele principale GSSAPI. Implicit este folosirea
# nume returnat de gethostname(). Folosiți „$ALL” (cu ghilimele) pentru a permite toate tastele
# intrări.
#auth_gssapi_hostname =

# Keytab Kerberos de utilizat pentru mecanismul GSSAPI. Va folosi sistemul
# implicit (de obicei /etc/krb5.keytab) dacă nu este specificat. Este posibil să fie nevoie să vă schimbați
# serviciul de autentificare să ruleze ca root pentru a putea citi acest fișier.
#auth_krb5_keytab = 

# Efectuați autentificarea NTLM și GSS-SPNEGO folosind demonul winbind al lui Samba și
# ntlm_auth helper. <doc/wiki/Authentication/Mechanisms/Winbind.txt>
#auth_use_winbind = nu

# Calea pentru binarul de ajutor ntlm_auth de la Samba.
#auth_winbind_helper_path = /usr/bin/ntlm_auth

# Timp de amânare înainte de a răspunde la autentificări eșuate.
#auth_failure_delay = 2 secunde

# Solicitați un certificat de client SSL valid sau autentificarea eșuează.
#auth_ssl_require_client_cert = nr

# Preluați numele de utilizator din certificatul SSL al clientului, folosind 
# X509_NAME_get_text_by_NID() care returnează DN-urile subiectului
# Denumirea comună. 
#auth_ssl_username_from_cert = nr

# Lista separată de spațiu a mecanismelor de autentificare dorite:
# autentificare simplă digest-md5 cram-md5 ntlm rpa apop anonim gssapi otp skey
# gss-spnego
# NOTĂ: Consultați și setarea disable_plaintext_auth.
auth_mechanisms = autentificare simplă

##
## Parole și baze de date cu utilizatori
##

#
# Baza de date cu parole este folosită pentru a verifica parola utilizatorului (și nimic mai mult).
# Puteți avea mai multe passdb-uri și userdb-uri. Acest lucru este util dacă doriți
# permite atât utilizatorilor de sistem (/etc/passwd) cât și utilizatorilor virtuali să se autentifice fără
# duplicarea utilizatorilor sistemului în baza de date virtuală.
#
# <doc/wiki/PasswordDatabase.txt>
#
# Baza de date cu utilizatori specifică unde se află e-mailurile și ce ID-uri de utilizator/grup
# deține-le. Pentru configurarea cu un singur UID, utilizați userdb „static”.
#
# <doc/wiki/UserDatabase.txt>

#!include auth-deny.conf.ext
#!include auth-master.conf.ext

!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

În setarea mea DNS, am o înregistrare „A mail IP” și o înregistrare „MX domain.net mail.domain.net”.

Michael Hampton avatar
drapel cz
Ce client de mail ai folosit pentru a te conecta la dovecot?
Top Stars avatar
drapel de
@MichaelHampton Am folosit Thunderbird
Michael Hampton avatar
drapel cz
Dar ce versiune? Pe ce sistem de operare?
Top Stars avatar
drapel de
@MichaelHampton Versiunea 78.11.0 pe ubuntu 20.04
Puncte:0
drapel de

Soluția a fost simplă, dar aproape că nu exista un fișier jurnal adecvat pentru a identifica și urmări problema pe Postfix. Am introdus o linie greșită în fișierul master.cf și singura modalitate de a realiza problema a fost să folosesc această comandă postconf mail_version pentru a verifica versiunea de mail. Chiar mă aștept ca postfix să aibă un sistem simplu de înregistrare pentru a verifica acest tip de erori.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.