Trimiterea emailurilor din site și aplicații (SMTP)
Cum configurați site-ul, aplicația sau serverul să trimită emailuri printr-un serviciu SMTP autentificat, ce înregistrări SPF, DKIM și DMARC adăugați și ce cereți suportului pentru un server de email propriu.
Pe această pagină
Pe un server nou, de regulă nu este configurat un serviciu de trimitere a emailurilor: formularele de contact, resetările de parolă și mesajele sarcinilor cron nu pleacă. Ghidul arată cum le trimiteți, cu autentificare, prin serverul SMTP al furnizorului de email al domeniului sau al unui serviciu de email tranzacțional și ce înregistrări DNS adăugați. Comenzile se rulează pe server, ca root, într-o sesiune SSH (Conectarea la server prin SSH (Windows, macOS, Linux)); adresa IP a serverului este în panoul app.blackbox.md, „Infrastructură” → „Serverele mele”, câmpul „IP”.
Disponibil pentru: oricine are acces root prin SSH la un server BLACKBOX. Pe un plan „VPS hosting” cu panou de control, întrebați întâi suportul ce panou este instalat: Planurile „VPS hosting” cu panou de control.
Ce vă trebuie de la furnizorul de email
Folosiți serverul SMTP al furnizorului la care este emailul domeniului dvs. sau un serviciu de email tranzacțional. Din documentația furnizorului notați:
| Ce | Valori uzuale | În acest ghid |
|---|---|---|
| Serverul SMTP | numele dat de furnizor | SMTP_HOST |
| Portul și criptarea | 587 cu STARTTLS sau 465 cu TLS | 587 |
| Utilizatorul și parola | adresa de email și parola ei, o parolă de aplicație sau o cheie API, după cum indică furnizorul | UTILIZATOR_SMTP, PAROLA_SMTP |
| Adresa expeditorului | o adresă a domeniului dvs., permisă de furnizor | ADRESA@DOMENIU |
În multe aplicații, STARTTLS (portul 587) apare ca „TLS”, iar TLS de la conectare (portul 465) apare ca „SSL”.
De ce nu trimiteți direct de pe adresa IP a serverului: serverele destinatare verifică reputația adresei IP care trimite și înregistrarea ei inversă (PTR), iar o adresă nouă nu are încă reputație. Reverse DNS (PTR) nu se setează din panou: scrieți-ne IP-ul serverului și numele dorit. Prin serviciul SMTP, mesajele pleacă de pe serverele furnizorului, care trec deja aceste verificări.
Securitate Parola SMTP sau cheia API permite oricui o are să trimită emailuri în numele domeniului dvs. Nu o puneți în depozite git publice, în capturi de ecran sau în tichete. Dați fișierelor care o conțin permisiunile
600, ca să le poată citi doar proprietarul. Dacă furnizorul permite, creați un utilizator sau o cheie separată doar pentru trimitere, în locul parolei căsuței dvs. de email.
Pasul 1. Verificați conexiunea la serverul SMTP
Instalați utilitarul
nc. Ubuntu și Debian:apt update apt install -y netcat-openbsdAlmaLinux și CentOS Stream:
dnf install -y nmap-ncatTestați portul:
nc -vz -w 5 SMTP_HOST 587Rezultatul bun conține
succeeded(Ubuntu, Debian) sauConnected(AlmaLinux, CentOS Stream).timed outsauTIMEOUTînseamnă că serverul SMTP nu a răspuns în 5 secunde.Verificați criptarea:
openssl s_client -starttls smtp -connect SMTP_HOST:587 -crlfDupă certificat trebuie să apară
Verify return code: 0 (ok). Scrieți apoi rândurile de mai jos, apăsând Enter după fiecare. Răspunsul laEHLOtrebuie să conțină un rând cuAUTH, iarQUITînchide conexiunea.EHLO test QUIT
Pentru portul 465 testați cu:
nc -vz -w 5 SMTP_HOST 465
openssl s_client -connect SMTP_HOST:465 -crlfDacă testul dă timed out sau TIMEOUT:
- Verificați firewall-ul din sistem. ufw și firewalld lasă implicit să iasă tot traficul; dacă ați restricționat traficul de ieșire, permiteți portul: Firewall: filtrarea din rețea și ufw/firewalld pe server.
- Încercați celălalt port (465 în loc de 587 sau invers).
- Dacă tot nu merge, scrieți suportului adresa IP a serverului (
IP_SERVER), portul și numele serverului SMTP: Cum contactați suportul BLACKBOX.
Pasul 2. Configurați aplicația
WordPress
WordPress trimite implicit prin funcția mail() a PHP, care pe un server nou nu are prin ce trimite. Instalați un plugin SMTP din directorul de plugin-uri WordPress și completați în setările lui:
- serverul:
SMTP_HOST; - portul: 587, criptarea TLS (STARTTLS); sau portul 465, criptarea SSL;
- autentificarea activată, cu utilizatorul și parola sau cheia API;
- adresa expeditorului:
ADRESA@DOMENIU.
Trimiteți apoi emailul de test din plugin. Instalarea WordPress: WordPress pe LEMP (nginx, MariaDB, PHP).
Alte aplicații și framework-uri
Completați setările SMTP în configurația aplicației sau în fișierul .env. Numele variabilelor diferă de la o aplicație la alta: folosiți-le pe cele din documentația ei. Un exemplu:
MAIL_HOST=SMTP_HOST
MAIL_PORT=587
MAIL_ENCRYPTION=tls
MAIL_USERNAME=UTILIZATOR_SMTP
MAIL_PASSWORD=PAROLA_SMTP
MAIL_FROM_ADDRESS=ADRESA@DOMENIULăsați fișierul cu parola în afara depozitului git (adăugați-l în .gitignore) și permiteți citirea lui doar utilizatorului sub care rulează aplicația, de exemplu www-data:
chown www-data:www-data /var/www/APLICATIE/.env
chmod 600 /var/www/APLICATIE/.envReporniți aplicația, ca să citească noile setări.
Pe AlmaLinux și CentOS Stream, SELinux blochează implicit conexiunile din PHP (inclusiv WordPress) spre serverul SMTP. Permiteți-le:
setsebool -P httpd_can_sendmail 1Pasul 3. Trimiterea de pe server cu msmtp (opțional)
Sarcinile cron, funcția mail() din PHP și programele care apelează sendmail au nevoie de un program care predă mesajele mai departe. msmtp le trimite prin serverul SMTP al furnizorului, cu aceleași date. El nu primește emailuri și nu ține o coadă de mesaje.
Ubuntu și Debian
apt update
apt install msmtp msmtp-mta- Pachetul
msmtp-mtacreează comanda/usr/sbin/sendmail, pe care o folosesc cron și PHP. - La întrebarea „Enable AppArmor support?” lăsați răspunsul implicit, „No”.
Atenție Dacă apt anunță că va șterge pachete (
The following packages will be REMOVED), de exemplupostfixsauexim4, răspundețin. Pe server rulează deja un program de email, folosit de un panou de control sau de un server de email propriu: nu-l înlocuiți cu msmtp, ci întrebați suportul.
AlmaLinux și CentOS Stream
Verificați întâi dacă pe server există deja un program de email:
ls -l /usr/sbin/sendmailRezultatul bun conține „No such file or directory”. Dacă fișierul există, pe server rulează deja un program de email, folosit de un panou de control sau de un server de email propriu: nu instalați msmtp, ci întrebați suportul.
Instalați msmtp din depozitul EPEL:
dnf install -y epel-release dnf install -y msmtp nanoPachetul
msmtpcreează și comanda/usr/sbin/sendmail, pe care o folosesc cron și PHP. Verificați:readlink -e /usr/sbin/sendmailRezultatul trebuie să fie
/usr/bin/msmtp. Dacă comanda nu afișează nimic, creați legătura:ln -s /usr/bin/msmtp /usr/sbin/sendmail
Fișierul de configurare
Creați fișierul:
nano /etc/msmtprcLipiți conținutul de mai jos, înlocuiți valorile cu majuscule, salvați cu Ctrl+O și Enter, apoi ieșiți cu Ctrl+X:
defaults auth on tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt syslog LOG_MAIL account default host SMTP_HOST port 587 from ADRESA@DOMENIU set_from_header on user UTILIZATOR_SMTP password PAROLA_SMTPRândul Ce face tls_trust_filefișierul cu autoritățile de certificare de încredere; pe AlmaLinux și CentOS Stream scrieți /etc/pki/tls/certs/ca-bundle.crtport 587șitls_starttls onpentru portul 465 scrieți port 465șitls_starttls offfromadresa expeditorului; trebuie să fie permisă de furnizor set_from_header onpune adresa din rândul fromîn antetul „From” al fiecărui mesaj; fără el, mesajele cron pleacă de laroot, iar unii furnizori le respingsyslog LOG_MAILscrie în jurnalul sistemului câte un rând pentru fiecare mesaj trimis Permiteți citirea fișierului doar lui
root:chmod 600 /etc/msmtprc
Testul
printf 'Subject: Test\n\nTest' | msmtp ADRESA_DESTINATARDacă comanda nu afișează nimic, mesajul a fost predat furnizorului. Verificați căsuța destinatarului, inclusiv dosarul Spam. Rezultatul trimiterii îl vedeți în jurnal:
journalctl -t msmtp -n 20Un rând reușit se termină cu exitcode=EX_OK. La o eroare, msmtp afișează mesajul serverului SMTP: vedeți tabelul „Probleme frecvente” de mai jos.
PHP
Configurați PHP-FPM să trimită prin msmtp, apoi reîncărcați-l. Ubuntu 24.04 (pe alt sistem, înlocuiți
8.3cu versiunea PHP instalată, de exemplu8.2pe Debian 12):printf 'sendmail_path = "/usr/bin/msmtp -t"\n' > /etc/php/8.3/fpm/conf.d/99-msmtp.ini systemctl reload php8.3-fpmAlmaLinux și CentOS Stream:
printf 'sendmail_path = "/usr/bin/msmtp -t"\n' > /etc/php.d/99-msmtp.ini systemctl reload php-fpmPHP rulează ca
www-data(Ubuntu, Debian) sauapache(AlmaLinux, CentOS Stream) și nu poate citi un fișier600al luiroot. Dați drept de citire grupului acestui utilizator. Ubuntu și Debian:chown root:www-data /etc/msmtprc chmod 640 /etc/msmtprcAlmaLinux și CentOS Stream, unde SELinux trebuie să permită și trimiterea din PHP:
chown root:apache /etc/msmtprc chmod 640 /etc/msmtprc setsebool -P httpd_can_sendmail 1
Astfel, orice cod PHP de pe server poate citi datele SMTP: încă un motiv să folosiți un utilizator SMTP separat, doar pentru trimitere.
Cron
Cron trimite rezultatul sarcinilor la adresa din variabila MAILTO. Fără ea, trimite la utilizatorul local (de exemplu root), o adresă pe care serverul SMTP nu o poate livra.
Deschideți crontab-ul:
crontab -eAdăugați la început rândul de mai jos și salvați:
MAILTO=ADRESA_DESTINATAR
Pasul 4. Adăugați SPF, DKIM și DMARC
Fără aceste înregistrări TXT, mesajele ajung des în Spam sau sunt respinse. Valorile exacte vi le dă furnizorul de email. Ce face fiecare înregistrare: secțiunea „Bune practici pentru trimiterea emailurilor” din Politica de utilizare acceptabilă: ce nu este permis.
| Înregistrare | „Nume” | „Conținut” |
|---|---|---|
| SPF | @ |
v=spf1 include:SPF_FURNIZOR ~all |
| DKIM | SELECTOR._domainkey |
valoarea v=DKIM1; … dată de furnizor |
| DMARC | _dmarc |
v=DMARC1; p=none; rua=mailto:ADRESA@DOMENIU |
- Un domeniu are o singură înregistrare SPF. Dacă există deja una, adăugați în ea
include:al furnizorului, nu creați a doua. Adăugațiip4:IP_SERVERdoar dacă serverul trimite el însuși, fără serviciu SMTP (de exemplu, un server de email propriu). SELECTOReste numele dat de furnizor. Unii furnizori dau cheia DKIM ca înregistrare CNAME: dacă valoarea ei conține caracterul_, adăugați-o direct în contul furnizorului DNS, nu din panou.- Începeți DMARC cu
p=none. Treceți laquarantinesaurejectdupă ce rapoartele arată că mesajele dvs. trec verificarea.
Înregistrările se adaugă la furnizorul DNS al domeniului. Dacă ați conectat Cloudflare sau GoDaddy, le puteți adăuga din pagina „DNS” a panoului (app.blackbox.md/dns): „Adaugă înregistrare”, tipul TXT, câmpurile „Nume” și „Conținut”, apoi „Salvează”. Pașii: Gestionarea înregistrărilor DNS din panou.
După câteva minute, verificați pe server sau pe calculatorul dvs. (Linux, macOS):
dig +short TXT DOMENIU
dig +short TXT _dmarc.DOMENIU
dig +short TXT SELECTOR._domainkey.DOMENIUFiecare comandă trebuie să afișeze valoarea adăugată, între ghilimele. Pe Windows folosiți:
nslookup -type=TXT DOMENIUDacă dig lipsește pe server, instalați-l. Ubuntu și Debian:
apt install -y dnsutilsAlmaLinux și CentOS Stream:
dnf install -y bind-utilsVerificați livrarea
| Unde | Ce căutați |
|---|---|
Jurnalul msmtp: journalctl -t msmtp |
exitcode=EX_OK la fiecare mesaj |
Postfix, dacă îl folosiți: journalctl -u 'postfix*'; dacă sistemul are rsyslog, și /var/log/mail.log (Ubuntu, Debian) sau /var/log/maillog (AlmaLinux, CentOS Stream) |
status=sent |
| Căsuța destinatarului: mesajul original (sursa, cu antetele complete) | rândul Authentication-Results, cu spf=pass, dkim=pass și dmarc=pass |
Server de email propriu
Dacă vreți căsuțe de email pe server sau să primiți emailuri (Postfix și Dovecot ori emailul unui panou de control):
- Un server de email pe VPS are nevoie de porturi (25, 465, 587, 993) care nu sunt deschise implicit în filtrarea din rețea. Filtrarea administrată de BLACKBOX lasă deschise implicit porturile 22, 80 și 443 și ping; alte porturi, la cerere, prin suport (Firewall: filtrarea din rețea și ufw/firewalld pe server).
- Serverul trimite direct altor servere de email, deci contează reputația adresei IP și înregistrarea PTR. Reverse DNS (PTR) nu se setează din panou: scrieți-ne IP-ul serverului și numele dorit.
- Pentru căsuțe de email, un furnizor specializat este de obicei mai simplu: nu administrați singur filtrarea spamului, reputația adresei și copiile de rezervă ale mesajelor.
- Pe un plan „VPS hosting”, întrebați suportul ce panou de control este instalat: Planurile „VPS hosting” cu panou de control.
Important Întrebați suportul înainte de a instala un server de email. Scrieți adresa IP a serverului, numărul comenzii (
BBX-…) și porturile de care aveți nevoie.
Regulile pentru trimiterea emailurilor
Capitolul 2 din „Termeni și condiții” (blackbox.md/info/terms) interzice:
- spamul „în orice formă” trimis prin serviciile BLACKBOX, precum și spamul trimis prin alt furnizor pentru a face reclamă unor resurse găzduite la BLACKBOX (punctul 2.2);
- adăugarea adreselor în liste de distribuție fără double opt-in. Dovezile consimțământului se păstrează cât timp există lista, iar listele cumpărate sau închiriate sunt interzise (punctul 2.3).
Trimiteți newsletterele și campaniile în masă printr-un serviciu specializat de email, nu prin SMTP-ul obișnuit al unei căsuțe. Detalii: Politica de utilizare acceptabilă: ce nu este permis.
O coadă de emailuri care tot crește sau mesaje pe care nu le-ați trimis pot însemna că serverul sau site-ul a fost spart: Serverul a fost spart sau este atacat: ce faceți.
Probleme frecvente
| Mesaj sau simptom | Cauza | Ce faceți |
|---|---|---|
Connection timed out, timed out sau TIMEOUT pe portul 587 sau 465 |
traficul de ieșire spre serverul SMTP nu trece | verificați regulile ufw/firewalld, încercați celălalt port, apoi scrieți suportului IP-ul serverului, portul și serverul SMTP |
535 sau „authentication failed” |
utilizator sau parolă greșită, ori furnizorul cere o parolă de aplicație sau o cheie API | verificați datele; creați la furnizor o parolă de aplicație sau o cheie API |
| „Relay access denied” sau „Sender address rejected” | furnizorul nu permite adresa expeditorului | trimiteți de pe o adresă permisă de furnizor; la unii furnizori adăugați și verificați întâi domeniul |
| Mesajele ajung în Spam | lipsesc SPF, DKIM sau DMARC, ori domeniul expeditorului diferă de cel autentificat | adăugați înregistrările de la pasul 4 și trimiteți de pe o adresă a domeniului verificat la furnizor |
sendmail: not found |
lipsește comanda sendmail |
Ubuntu și Debian: instalați msmtp-mta; AlmaLinux și CentOS Stream: creați legătura de la pasul 3 |
cannot set X509 trust file |
tls_trust_file indică fișierul altei distribuții |
folosiți calea pentru sistemul dvs. din tabelul de la pasul 3 |
account default not found: no configuration file available, la trimiterea din PHP |
utilizatorul PHP nu poate citi /etc/msmtprc |
aplicați chown și chmod 640 din secțiunea PHP |
| Pe AlmaLinux sau CentOS Stream, PHP nu trimite, deși testul din consolă reușește | SELinux blochează trimiterea din PHP | rulați comanda setsebool din secțiunea PHP |
Întrebări frecvente
Pot comanda căsuțe de email de la BLACKBOX? Nu din cont: căsuțele de email nu se comandă online. Întrebați suportul ce vă poate oferi: Produse și configurații disponibile la cerere.
Poate asistentul AI să configureze trimiterea emailurilor?
Da, cu unealta run_server_command și un token cu permisiunea „Rulează orice comandă ca root pe serverele mele” (servers:exec): Rularea comenzilor pe server prin AI. Datele SMTP pe care i le dați ajung la furnizorul modelului AI: folosiți un utilizator SMTP separat și schimbați-i parola dacă ați lipit-o într-o conversație (Securitatea token-urilor și a agenților AI).
Trebuie să configurez și aplicația, și msmtp?
Nu neapărat. Dacă aplicația are setări SMTP proprii (pasul 2), acestea sunt suficiente. msmtp vă trebuie pentru cron, pentru funcția mail() din PHP și pentru programele care apelează sendmail. Cu msmtp configurat pentru PHP, și WordPress trimite fără plugin SMTP.
Am mutat site-ul de la alt furnizor și formularele nu mai trimit emailuri. De ce? La vechea găzduire, trimiterea era de obicei configurată de furnizor. Pe serverul BLACKBOX o configurați dvs., cu pașii de mai sus. Despre mutarea emailului: Mutarea unui site pe serverul BLACKBOX.