Puncte:0

Postix pentru a retransmite SMTP de la portul 587

drapel cn

Am un server Debian cu postfix, fail2ban, roundcube, webmin și dovecot instalat pe el. Am reușit să trimit mail-uri din portul 25, dar indiferent de ce încerc, nu pot să-l fac să funcționeze de la 465 și/sau 587 indiferent de metoda pe care o încerc. Acest lucru se întâmplă în roundcube și un client de e-mail, deși bănuiesc că ambele erori pot diferi. Am încercat diverse lucruri în ultimele zile și am citit și câteva soluții posibile, dar niciuna dintre ele nu a funcționat pentru mine, așa că, până la urmă, iată ce am:

Roundcube config/config.inc.php:

<?php

$config['debug_level'] = 4;
$config['smtp_debug'] = adevărat;

$config = [];

// Șir de conexiune la baza de date (DSN) pentru operațiuni de citire+scriere
// Format (compatibil cu PEAR MDB2): db_provider://user:password@host/database
// db_providers acceptați în prezent: mysql, pgsql, sqlite, mssql, sqlsrv, oracle
// Pentru exemple, consultați http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php
// NOTĂ: pentru SQLite utilizați calea absolută (Linux): 'sqlite:////full/path/to/sqlite.db?mode=0646'
// sau (Windows): „sqlite:///C:/full/path/to/sqlite.db”
$config['db_dsnw'] = 'mysql://user:pass@localhost/db';

// Gazda IMAP aleasă pentru a efectua conectarea.
// Lăsați necompletat pentru a afișa o casetă de text la conectare, oferiți o listă de gazde
// pentru a afișa un meniu derulant sau pentru a seta o gazdă ca șir.
// Introduceți numele de gazdă cu prefixul ssl:// pentru a utiliza TLS implicit sau utilizați
// prefixul tls:// pentru a utiliza STARTTLS.
// Variabile de înlocuire acceptate:
// %n - nume de gazdă ($_SERVER['SERVER_NAME'])
// %t - nume de gazdă fără prima parte
// %d - domeniu (http numele de gazdă $_SERVER['HTTP_HOST'] fără prima parte)
// %s - numele domeniului după „@” de la adresa de e-mail furnizată pe ecranul de conectare
// De exemplu %n = mail.domain.tld, %t = domain.tld
$config['default_host'] = 'mail.domain.tld';

// Gazdă server SMTP (pentru trimiterea de e-mailuri).
// Introduceți numele de gazdă cu prefixul ssl:// pentru a utiliza TLS implicit sau utilizați
// prefixul tls:// pentru a utiliza STARTTLS.
// Variabile de înlocuire acceptate:
// %h - numele de gazdă IMAP al utilizatorului
// %n - nume de gazdă ($_SERVER['SERVER_NAME'])
// %t - nume de gazdă fără prima parte
// %d - domeniu (http numele de gazdă $_SERVER['HTTP_HOST'] fără prima parte)
// %z - domeniu IMAP (numele de gazdă IMAP fără prima parte)
// De exemplu %n = mail.domain.tld, %t = domain.tld
// Pentru a specifica diferite servere SMTP pentru diferite gazde IMAP, furnizați o matrice
// a gazdei IMAP (fără prefix sau port) și server SMTP, de ex. ['imap.example.com' => 'smtp.example.net']
$config['smtp_server'] = 'tls://mail.domain.tld';

// Port SMTP. Utilizați 25 pentru text clar, 465 pentru TLS implicit sau 587 pentru STARTTLS (implicit)
$config['smtp_port'] = 587;

// Nume de utilizator SMTP (dacă este necesar) dacă utilizați %u ca nume de utilizator Roundcube
// va folosi numele de utilizator curent pentru autentificare
$config['smtp_user'] = '';

// Parolă SMTP (dacă este necesar) dacă utilizați %p ca parolă Roundcube
// va folosi parola utilizatorului curent pentru autentificare
$config['smtp_pass'] = '%p';

// furnizați o adresă URL de unde un utilizator poate obține suport pentru această instalare Roundcube
// VA RUGAM SA NU LEGATI LA SITE-UL ROUNDCUBE.NET AICI!
$config['support_url'] = '';

// Denumiți-vă serviciul. Acesta este afișat pe ecranul de conectare și în titlul ferestrei
$config['product_name'] = 'Webmail';

// Această cheie este folosită pentru a cripta parola imap a utilizatorilor care este stocată
// în înregistrarea sesiunii. Pentru metoda de cifrare implicită trebuie să fie
// exact 24 de caractere.
// CHEIA DVS. TREBUIE SĂ FIE ALTA DE VALOAREA EȘANȚULUI DIN MOTIVE DE SECURITATE
$config['des_key'] = 'rcmail-random_key_here';

// Lista de pluginuri active (în directorul pluginuri/)
$config['plugins'] = [
    'Arhiva',
    'zipdownload',
];

// nume skin: folder din skin-uri/
$config['skin'] = 'elastic';


$config['imap_conn_options'] = matrice(
    'ssl' => array('verify_peer' => true, 'verfify_peer_name' => false),
    'tls' => array('verify_peer' => true, 'verfify_peer_name' => false),
);


$config['default_host'] = 'ssl://mail.domain.tld';
$config['default_port'] = '993';
$config['smtp_server'] = 'tls://mail.domain.tld';
$config['smtp_port'] = '587';
$config['smtp_debug'] = adevărat;

În prezent, pot primi e-mailuri în roundcube la portul 143 și 993, dar pot trimite doar de la portul 25. Iată eroarea pe care o primesc când încerc să trimit un e-mail de la 587:

Eroare SMTP (554): Nu s-a putut adăuga destinatarul „[email protected]” (5.7.1 <[email protected]>: adresa destinatarului respinsă: acces refuzat).

Iată ce arată roundcube logs/smtp.log:

[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Se conectează la tls://mail.hlebarkite.bg:587...
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 220 mail.domain.ltd ESMTP Postfix
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Trimiteți: EHLO webmail.domain.ltd
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-mail.domain.ltd
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-PIPELINING
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-SIZE 10240000
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-VRFY
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-ETRN
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-STARTTLS
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-ENHANCEDSTATUSCODES
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-8BITMIME
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-DSN
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-SMTPUTF8
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250 CHUNKING
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Trimiteți: MAIL FROM:<[email protected]>
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250 2.1.0 Ok
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Trimiteți: RCPT către:<[email protected]>
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 554 5.7.1 <[email protected]>: Adresa destinatarului respinsă: Acces refuzat
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Trimiteți: RSET
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250 2.0.0 Ok
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Trimiteți: RENUNȚĂ
[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 221 2.0.0 Pa

Iată ce arată logs/error.log:

[10-mar-2022 00:08:05 +0200]: <gqnft6kr> Eroare SMTP: Nu s-a putut adăuga destinatarul „[email protected]”. 5.7.1 <[email protected]>: Adresa destinatarului respinsă: Acces refuzat (Cod: 554) în /home/webmail/program/lib/Roundcube/rcube.php pe linia 1774 (POST /?_task=mail&_unlock=loading1646863684782&_framed=& 1&_action=trimite)

Dacă încerc să trimit un e-mail în felul acesta:

echo "corp mesaj de testare" | mail -s „test” [email protected]

Obțin următoarele în /var/log/mail.log

10 mar 00:12:11 lamp postfix/submission/smtpd[1126]: conectați-vă de la necunoscut[xx.xx.xx.xx - acesta este IP-ul serverului]
10 mar 00:12:11 lamp postfix/submission/smtpd[1126]: avertisment: SASL: Conectarea la privat/autentificare a eșuat: Nu există un astfel de fișier sau director
Mar 10 00:12:11 lamp postfix/submission/smtpd[1126]: fatal: nu există mecanisme de autentificare SASL
10 mar 00:12:12 lamp postfix/master[1300]: avertisment: proces /usr/lib/postfix/sbin/smtpd pid 1126 stare de ieșire 1
10 martie 00:12:12 lamp postfix/master[1300]: avertisment: /usr/lib/postfix/sbin/smtpd: pornire greșită a comenzii -- throttling
Mar 10 00:12:12 lamp postfix/smtp[1125]: C520F1300420: to=<[email protected]>, relay=mail.domain.ltd[xx.xxx.xx.xx server ip]:587, delay= 1.1, întârzieri=0.09/0.01/1/0, dsn=4.4.2, status=amânat (s-a pierdut conexiunea cu mail.domain.ltd[xx.xx.xx.xx IP server] în timpul efectuării strângerii de mână EHLO)

Dacă încerc să trimit un e-mail de la un client de e-mail, văd această eroare:

Eroare raportată a fost „Comandă HELO a eșuat: Eroare la primirea datelor: Resetarea conexiunii de către peer”.

Iată cum arată postconf -n:

postconf: avertisment: /etc/postfix/master.cf: parametru nedefinit: mua_sender_restrictions
postconf: avertisment: /etc/postfix/master.cf: parametru nedefinit: mua_client_restrictions
postconf: avertisment: /etc/postfix/master.cf: parametru nedefinit: mua_helo_restrictions
postconf: avertisment: /etc/postfix/master.cf: parametru nedefinit: mua_sender_restrictions
postconf: avertisment: /etc/postfix/master.cf: parametru nedefinit: mua_client_restrictions
postconf: avertisment: /etc/postfix/master.cf: parametru nedefinit: mua_helo_restrictions
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = nr
biff = nu
compatibility_level = 2
inet_protocols = all
cutie_poștală_size_limit = 0
mydestination = localhost.$mydomain, localhost, $myhostname
mydomain = mail.domain.ltd
myhostname = mail.domain.ltd
rețelele mele = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
mynetworks_style = subrețea
readme_directory = nr
destinatar_delimiter = +
relayhost = [mail.domain.ltd]:587
smtp_sasl_auth_enable = da
smtp_sasl_password_maps = static:nume utilizator:pasare
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = mai
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = da
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination permit_inet_interfaces
smtpd_sasl_path = private/auth
smtpd_sasl_security_options =
smtpd_sasl_type = porumbel
smtpd_tls_CAfile = /var/lib/dehydrated/certs/mail.domain.ltd/fullchain.pem
smtpd_tls_cert_file = /var/lib/dehydrated/certs/mail.domain.ltd/cert.pem
smtpd_tls_key_file = /var/lib/dehydrated/certs/mail.domain.ltd/privkey.pem
smtpd_tls_security_level = mai
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = da
virtual_alias_maps = hash:/etc/postfix/virtual

Iată cum arată /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

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 = /var/lib/dehydrated/certs/mail.domain.ltd/cert.pem
smtpd_tls_key_file = /var/lib/dehydrated/certs/mail.domain.ltd/privkey.pem
smtpd_use_tls=da
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = mai
# Consultați /usr/share/doc/postfix/TLS_README.gz în pachetul postfix-doc pentru
# informații despre activarea SSL în clientul smtp.

#smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination permit_inet_interfaces
myhostname = mail.domain.ltd
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#mydestination = $myhostname, mail.domain.ltd, localdomain, localhost, localhost.localdomain, localhost
#  Test
mydestination = localhost.$mydomain, localhost, $myhostname
rețelele mele = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
cutie_poștală_size_limit = 0
destinatar_delimiter = +
inet_protocols = all
virtual_alias_maps = hash:/etc/postfix/virtual
smtp_use_tls = da
smtpd_tls_CAfile = /var/lib/dehydrated/certs/mail.domain.ltd/fullchain.pem
#smtpd_recipient_restrictions = permit_mynetworks permit_inet_interfaces permit_sasl_authenticated
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination permit_inet_interfaces
smtpd_tls_security_level = mai
mynetworks_style = subrețea
#mydomain = domeniu local
# Test
mydomain = mail.domain.ltd
smtpd_sasl_security_options = 
# Test
relayhost = [mail.domain.ltd]:587
smtp_sasl_auth_enable = da
smtp_sasl_password_maps = static:nume utilizator:pasare
smtp_sasl_security_options = noanonymous 
smtpd_sasl_path = private/auth
smtpd_sasl_type = porumbel

Iată cum arată /etc/postfix/master.cf:

#
# Fișierul de configurare a procesului master Postfix. Pentru detalii despre format
# din fișier, consultați pagina de manual master(5) (comandă: „man 5 master” sau
# on-line: http://www.postfix.org/master.5.html).
#
# Nu uitați să executați „postfix reload” după editarea acestui fișier.
#
# =================================================== ==========================
# tip de serviciu private unpriv chroot wakeup maxproc command + args
# (da) (da) (nu) (niciodată) (100)
# =================================================== ==========================
smtp inet n - y - - smtpd
smtp inet n - y - 1 postscreen
smtpd trece - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
tlsproxy unix - - y - 0 tlsproxy
depunerea inet n - y - - smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=mai
  -o smtpd_sasl_auth_enable=da
  -o smtpd_tls_auth_only=da
  -o smtpd_reject_unlisted_recipient=nu
  -o smtpd_client_restrictions=$mua_client_restrictions
  -o smtpd_helo_restrictions=$mua_helo_restrictions
  -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINARE
smtps inet n - y - - smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=da
  -o smtpd_sasl_auth_enable=da
  -o smtpd_reject_unlisted_recipient=nu
  -o smtpd_client_restrictions=$mua_client_restrictions
  -o smtpd_helo_restrictions=$mua_helo_restrictions
  -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINARE
#628 inet n - y - - qmqpd
pickup unix n - y 60 1 pickup
curatare unix n - y - 0 curatare
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rescrie unix - - y - - trivial-rescriere
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 săritură
verifica unix - - y - 1 verifica
spălați Unix n - y 1000? 0 culoare
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
releu unix - - y - - smtp
        -o syslog_name=postfix/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - y - - showq
eroare unix - - y - - eroare
reîncercați Unix - - y - - eroare
arunca unix - - y - - arunca
unix local - n n - - local
unix virtual - n n - - virtual
lmtp unix - - y - - lmtp
nicovală unix - - y - 1 nicovală
scache unix - - y - 1 scache
postlog unix-dgram n - n - 1 postlogd
#
# =================================================== ====================
# Interfețe cu software-ul non-Postfix. Asigurați-vă că examinați manualul
# de pagini ale software-ului non-Postfix pentru a afla ce opțiuni dorește.
#
# Multe dintre următoarele servicii utilizează livrarea Postfix pipe(8).
# agent. Consultați pagina de manual pipe(8) pentru informații despre ${recipient}
# și alte opțiuni pentru plicuri pentru mesaje.
# =================================================== ====================
#
# maildrop. Consultați fișierul Postfix MAILDROP_README pentru detalii.
# Specificați, de asemenea, în main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# =================================================== ====================
#
# Versiunile recente de Cyrus pot folosi intrarea existentă „lmtp” master.cf.
#
# Specificați în cyrus.conf:
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specificați în main.cf una sau mai multe dintre următoarele:
# mailbox_transport = lmtp:inet:localhost
# virtual_transport = lmtp:inet:localhost
#
# =================================================== ====================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Specificați și în main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - pipe
# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# =================================================== ====================
# Exemplu vechi de livrare prin Cyrus.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# =================================================== ====================
#
# Consultați fișierul Postfix UUCP_README pentru detalii de configurare.
#
uucp unix - n n - - conductă
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($destinatar)
#
# Alte metode de livrare externă.
#
ifmail unix - n n - - pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($destinatar)
bsmtp unix - n n - - conductă
  steaguri=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $destinatar
scalemail-backend unix - n n - 2 conducte
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}

Orice ajutor ar fi foarte apreciat.

codlord avatar
drapel mp
Configurația dvs. spune că doriți autentificare prin Dovecot (`smtpd_sasl_type = dovecot`). Dovecot este instalat, configurat și rulează? Jurnalul dvs. spune `Conectarea la private/auth failed: No such file or directory` (`smtpd_sasl_path = private/auth`), ceea ce pare să indice că nu. Sau că ceva nu este în regulă cu configurația dvs. de acolo. Vezi aici: https://doc.dovecot.org/configuration_manual/howto/postfix_and_dovecot_sasl/

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.