Puncte:1

POSTFIX / Lista gri nu funcționează

drapel in

Am avut un atac de spam pe site-ul meu. cineva care îmi folosește e-mailul pentru a trimite e-mail spam tuturor.

Așa că acum plănuiesc să găsesc o modalitate de a o opri.

Văd oameni care resping e-mailurile prin expresii regex. Dar am tone și tone de e-mailuri diferite (50.000 de utilizatori).

Vreau să văd dacă există e-mail în baza de date, atunci îi permit să meargă. În caz contrar, carantina. Nu le vreau blocate în coada de e-mail.

eu am această listă gri.pl:

#principal.cf 
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:/private/greylist

#master.cf
greylist unix - n n - - spawn user=nobody argv=/usr/bin/perl /tmp/mailrejct.

Dar când îl folosesc, primesc aceste erori în maillog:

Dec 25 09:24:58 intelligent-mahavira postfix/spawn[107258]: avertisment: comanda /usr/bin/perl stare de ieșire 2
25 decembrie 09:24:58 intelligent-mahavira postfix/smtpd[107253]: avertisment: terminarea prematură a introducerii pe /private/greylist în timpul citirii numelui atributului de intrare
25 decembrie 09:24:59 intelligent-mahavira postfix/spawn[107258]: avertisment: comanda /usr/bin/perl stare de ieșire 2
25 decembrie 09:24:59 intelligent-mahavira postfix/smtpd[107253]: avertisment: terminarea prematură a introducerii pe /private/greylist în timpul citirii numelui atributului de intrare
25 dec 09:24:59 intelligent-mahavira postfix/smtpd[107253]: avertisment: problemă la vorbirea cu serverul /private/greylist: conexiunea resetată de către egal

am inlocuit smtpd_access_policy cu ai mei. Aceasta este o diferență. Oricine expert în asta.

Cine trimite valorile atributelor? Postfix? cum a trecut?

NU REZOLVAT. Acest lucru este doar pentru primirea de e-mail. Numai pentru spam primit.

Pentru e-mailurile trimise există doar verificări de model.

1 #!/bin/sh
 2 
 3 # Filtru simplu bazat pe shell. Este menit să fie invocat după cum urmează:
 4 # /path/to/script -f destinatarii expeditorului...
 5 
 6 # Localizați-le. Opțiunea -G nu face nimic înainte de Postfix 2.3.
 7 INSPECT_DIR=/var/spool/filter
 8 SENDMAIL="/usr/sbin/sendmail -G -i" # NICIODATĂ NICIODATĂ NICIODATĂ NICIODATĂ NU folosiți „-t” aici.
 9 
10 # Coduri de ieșire din <sysexits.h>
11 EX_TEMPFAIL=75
12 EX_UNAVAILABLE=69
13 
14 # Curățați când terminați sau când anulați.
15 capcană "rm -f in.$$" 0 1 2 3 15
16 
17 # Începeți procesarea.
18 cd $INSPECT_DIR || {
19 echo $INSPECT_DIR nu există; ieșire din $EX_TEMPFAIL; }
20 
21 cat >in.$$ || { 
22 echo Nu se pot salva e-mailurile în fișier; ieșire din $EX_TEMPFAIL; }
23 
24 # Specificați filtrul de conținut aici.
25 # filtru <in.$$ || {
26 # echo Conținutul mesajului a fost respins; ieșire din $EX_UNAVAILABLE; }
27 
28 $SENDMAIL „$@” <în.$$
29 
30 ieșire $?



Cele de mai sus se pot converti în cod php? Mă întreb dacă trimit mail de la php se va întoarce în același loc?

exec("/usr/sbin/sendmail $email < /etc/postfix/myfilter/email.txt");

Trebuie să pun chestiile de e-mail în email.txt. Când testez întregul e-mail-uri cu detalii și chestii care arată tot conținutul și anteturile

Trebuie să fac curățenie

De la [email protected] duminica 26 decembrie 12:31:47 2021
Primit: de la webmail.test.com (localhost.localdomain [IPv6:::1])
        de intelligent-mahavira.51-163-215-224.plesk.page (Postfix) cu ID ESMTPSA B9CFD82DA1
        pentru <[email protected]>; Duminică, 26 decembrie 2021 12:31:47 +0000 (UTC)
Autentificare-Rezultate: intelligent-mahavira.51-163-215-224.plesk.page;
        spf=pass (IP-ul expeditorului este ::1) [email protected] smtp.helo=webmail.test.com
Primit-SPF: trece (intelligent-mahavira.51-163-215-224.plesk.page: conexiunea este autentificată)
Versiunea MIME: 1.0
Data: Duminica, 26 Dec 2021 04:31:47 -0800
De la: [email protected]
Către: alex3 <[email protected]>
Subiect: testarea filtrului2
Agent utilizator: Roundcube Webmail/1.4.11
ID-ul mesajului: <[email protected]>
X-Sender: [email protected]
Tip de conținut: text/plan simplu; set de caractere=US-ASCII;
 format=curgere
Codare de transfer de conținut: 7 biți
X-PPP-Message-ID: <164052190789.24073.12166249882816501264@intelligent-mahavira.51-163-215-224.plesk.page>
X-PPP-Vhost: test.com

sss


Am văzut asta pe google, voi încerca mâine folosind regex pentru a filtra subiectul din tipul de conținut și corp.

    Către: [email protected]
    Subiect: Acesta este un mesaj HTML
    De la: [email protected]
    Tip de conținut: text/html; charset="utf8"

    <html>
    <corp>
    <div style="
        culoare de fundal: 
        #abcdef; latime: 300px; 
        înălțime: 300px;
        „>
    </div>
    Puteți adăuga orice e-mail HTML valid aici.
    </corp>
    </html>
  1. Greylisting - putem oferi feedback de acces sub forma „nu știu”, „respinge text opțional”.
  2. Filtru simplu fără feedback. Filtrul trebuie să se ocupe de trimiterea e-mailului. Nu este clar cum se face. Practic capturez toate STDIN-ul și îl trimit ca e-mail, dar are toate anteturile. Nu știu cum s-a gestionat atașamentul. Trebuie să văd ce arată când trimit atașament.
  3. Filtrarea avansată pare confuză. Văd că securitatea e-mailului plex implementează asta. când l-am adăugat, a adăugat acest lucru la main.cf și master.cf

smtp inet n - n - - smtpd
  -o content_filter = smtp-amavis:[127.0.0.1]:10024


localhost:10025 inet n - n - - smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o hărți_releu_destinatar=
  -o smtpd_delay_reject=nu
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8,[::1]/128
  -o smtpd_authorized_xclient_hosts=127.0.0.0/8,[::1]/128
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o smtpd_restriction_classes=
  -o rețelele mele=127.0.0.0/8,[::1]/128
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o local_header_rewrite_clients=
depunerea inet n - n - - smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=criptare
  -o smtpd_sasl_auth_enable=da
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o content_filter=smtp-amavis:[127.0.0.1]:10026
pickup unix n - n 60 1 pickup
  -o content_filter=smtp-amavis:[127.0.0.1]:10026

Acesta este e-mailul salvat în data.txt și trimiteți-l manual dacă se potrivește cu e-mailul destinatarului din sistem

Primit: de la webmail.test.com (localhost.localdomain [IPv6:::1])
        de către intelligent-mahavira.serverip.plesk.page (Postfix) cu ID-ul ESMTPSA C7E7282E1B;
        Mar, 28 decembrie 2021 00:36:31 +0000 (UTC)
Autentificare-Rezultate: intelligent-mahavira.serverip.plesk.page;
        spf=pass (IP-ul expeditorului este ::1) [email protected] smtp.helo=webmail.test.com
Primit-SPF: trece (intelligent-mahavira.serverip.plesk.page: conexiunea este autentificată)
Versiunea MIME: 1.0
Data: Luni, 27 Dec 2021 16:36:31 -0800
De la: [email protected]
Către: alex2 <[email protected]>, alex3 <[email protected]>,
 [email protected]
Subiect: Test de atașament
Agent utilizator: Roundcube Webmail/1.4.11
ID-ul mesajului: <[email protected]>
X-Sender: [email protected]
Tip de conținut: mai multe părți/mixt;
 boundary="=_5745fc7d762d12dda4165a3e0be576fc"
X-PPP-Message-ID: <164065179196.8458.1248882909976426707@intelligent-mahavira.serverip.plesk.page>
X-PPP-Vhost: test.com

--=_5745fc7d762d12dda4165a3e0be576fc
Codare de transfer de conținut: 7 biți
Tip de conținut: text/plan simplu; set de caractere=US-ASCII;
 format=curgere

Atașament succes?
--=_5745fc7d762d12dda4165a3e0be576fc
Conținut-Transfer-Codificare: base64
Tip de conținut: imagine/jpeg;
 name=536_PIA23645_PaleBlueDotRevisited_1600.jpg
Conținut-Dispoziție: atașament;
 filename=536_PIA23645_PaleBlueDotRevisited_1600.jpg;
 dimensiune=74009

/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMcaHR0cDov

Problema este că nu există subiect în e-mail. este ascuns în interiorul anteturilor. Urât.

rezultat

  1. Sosit de la e-mail spune gmail ..am un test de respingere curat Răspunsul de la serverul de la distanță a fost: 554 5.7.1 [email protected]: Adresa destinatarului a fost respinsă: E-mailul este permis numai între UTILIZATORI. Destinatar e-mail= [email protected] Utilizează metoda Politicii

  2. E-mail trimis Trimit e-mail pentru utilizatori validi și îl resping/în carantină pe celălalt.. nu primesc imaginea de respingere. Trebuie să am același text pentru e-mailul de ieșire Utilizează un filtru de conținut simplu

drapel jp
Nu este clar ce încerci să obții. Este vorba despre e-mailuri trimise de pe domeniul dvs. și doriți să verificați expeditorii? Sau doriți să verificați e-mailurile primite și doriți să verificați destinatarii? Sau ai un releu deschis și cineva a folosit serverul tău pentru a trimite spam altora? Sau cineva tocmai v-a falsificat e-mailul și l-a folosit pentru a trimite spam și aveți nevoie doar de SPF/DKIM/DMARC adecvat?
Jupiter rules avatar
drapel in
Dacă cineva a piratat e-mailul unuia dintre utilizatori și începe să trimită spam folosind serverele noastre sau un cod de pe site-ul nostru a spart și cineva folosește datele de conectare pentru a trimite spam. Nici o listă gri nu poate împiedica acest lucru. Așa că am implementat un sistem care verifică că destinatarii de ieșire sunt în baza de date dacă nu resping. Nu-mi place să resping pentru că ne va ucide cutia poștală pentru că cineva ne folosește cutia poștală. Vreau să intru în carantină.Am primit refuz de lucru în sfârșit. După 2 săptămâni de gândire cum să implementezi. Inițial folosea hook pentru a imprima informații de e-mail, dar nu a făcut nimic altceva.
Nikita Kipriyanov avatar
drapel za
Nu trimite e-mail expeditorului. Dacă acesta este spam, veți genera un backscatter care este aproape la fel de rău ca spamul în sine. Cum trimite aplicația dvs. e-mail exact? Folosești PHPMailer pentru așa ceva? Dacă nu, acesta este primul lucru pe care ar trebui să-l faci.
Jupiter rules avatar
drapel in
Da, php mailer trimite e-mail utilizatorilor sistemului. Ideea mea este să blochez orice e-mail care nu este în sistem. Am folosit un filtru simplu în postfix până acum. Dar filtrul avansat este puțin confuz de implementat. Documentele pentru postfix sunt foarte proaste. Este scris în contextul dezvoltatorului, dar nu al implementatorului. Întotdeauna lipsesc o explicație. Lipsa exemplelor este o problemă. Filtrul simplu trimite e-mail, dar ce e-mail? Dar atașamentele din acel e-mail?
Nikita Kipriyanov avatar
drapel za
Deci, PHPMailer folosește SMTP (și de preferat autentificarea) atunci când se conectează la serverul tău de e-mail? Cum este configurat mai exact? Ce serviciu SMTP Postfix primește trimiterea PHPMailer? (Bănuiesc că se încadrează în `mynetworks` și este permis cu `permit_mynetworks` sau ceva de genul acesta, iar Amavis este, de asemenea, configurat pentru a omite majoritatea verificărilor pentru adresele „în lista albă”. Trebuie să reluați acest lucru; fie puneți verificări ale serviciului de politici în fața ` permit_mynetworks` sau reconfigurați filtrul de conținut pentru a nu face excepții.)
Jupiter rules avatar
drapel in
Folosesc phpmailer pentru a trimite e-mailuri clienților folosind SMTP în portul 25. Toate smptpd din main.cf sunt pentru e-mailurile primite. Am nevoie de ceva pentru e-mailurile trimise, așa că doar returnez Respinge mesajul de e-mail folosind politica. dar nu văd să găsesc unul pe care să-l pot folosi. Hărțile de transport declanșează trimiterea de e-mail, dar se așteaptă ca rezultat hărți. Mai mult din tabelul de căutare static nu este dinamic ca procesul de spawn.
Jupiter rules avatar
drapel in
Filtrul simplu îl prinde, dar trebuie să trimit singur e-mailul. Dar conținutul arată toate anteturile și chestiile atunci când este primit. Deci trebuie să văd ce ar trebui să trimit. Cum va fi atașamentul.Actualizez rezultatul testului atașamentului după ce îl testez. dacă nu reușesc, trebuie să îmi dau seama cum funcționează filtrul avansat, deoarece pare să ascult în postarea 10026.
bjoster avatar
drapel cn
Acest lucru este pur și simplu prea mult pentru un singur răspuns. Împărțiți-vă întrebarea (de exemplu) în patru părți (cred că pot vedea întrebări despre Greylisting, RegEx Matching, configuratrion Postfix și Perl) și obțineți răspunsuri unul câte unul.
Puncte:1
drapel za

Suporturi Postfix servicii de politici. Este posibil să implementați ceea ce solicitați prin proiectarea unui serviciu de politici. De asemenea, ar putea exista și alte moduri; acest fel este primul lucru care mi-a venit în minte.Exemplul de la sfârșitul acelei pagini conține aproape tot ceea ce aveți nevoie.

Totuși, acesta este o fundătură. În loc să proiectați și să securizați în mod corespunzător o aplicație web și un server, permiteți accesul părților rău intenționate și apoi încercați să evitați consecințele inevitabile. Ți-ai dat seama cum au făcut asta prin aplicația ta web? Ai reparat gaura aceea? Aceasta ar trebui să fie prima ta prioritate.

În afară de asta, sugestii generale:

  1. Aplicația dvs. web nu ar trebui să trimită e-mail la voința terțelor părți. Trebuie să-l trimită numai atunci când sunteți sigur că e-mailul ar trebui trimis.
  2. Aplicația web ar trebui autentificați întotdeauna la serverul de mail. Este foarte greșit dacă te bazezi pe Poștă() funcția de așa ceva. Există mai multe biblioteci PHP care știu cum să facă autentificarea ESMTP, folosiți una dintre ele.
  3. Serverul dvs. de e-mail ar trebui să limiteze adresa expeditorului pe care site-ul dvs. o poate folosi. Și, de asemenea, poate restricționa fluxul de corespondență, prin stabilirea unor limite (pe oră, pe zi etc.); există modalități de a face asta.
  4. Serverul de e-mail ar putea verifica mesajul pentru spam înainte de livrare. În acest fel, veți elibera mai puțin spam.
Paul avatar
drapel cn
@Jupiterrules Dacă aceasta răspunde la întrebarea ta, te rugăm să o marchezi ca răspuns.
Jupiter rules avatar
drapel in
De fapt, nu. Este folosit doar pentru e-mailurile primite din exterior. E-mailul de ieșire există doar verificări de antet, verificări corporale, acestea fac doar verificări de model. Nu le pot folosi deoarece baza mea de date are 50000 de e-mailuri de utilizator din diferite domenii. ÎNCHIS
Nikita Kipriyanov avatar
drapel za
Din perspectiva MTA, nu există nicio corespondență „primită” sau „ieșită”. Asta e construcția minții tale. Toate mesajele sunt „trec prin”. De exemplu, după ce ați făcut ca scriptul dvs. PHP să trimită întotdeauna e-mail folosind ESMTP cu autentificare, puteți atașa orice verificări la acel server SMTP care primește această trimitere, inclusiv pe cele pe care le considerați utile doar pentru „filtrarea spam-ului primit”.
Jupiter rules avatar
drapel in
Ne pare rău că am verificat deja Numai e-mailurile care vin din afara domeniului meu vin la restricții smtp_recipient. Deci, politica pe lista gri sau politica mea poate prinde. Pentru expediere, filtrul de conținut îl prinde, dar trebuie să trimiteți e-mailul, deoarece nu există feedback către sistem. Voi actualiza odată ce reușesc să trimit e-mailul corect înapoi către expeditor și să trimit mesaje de stare către syslog și maillog pentru ca Fail2ban să ridice adresa IP a expeditorului pentru interzicerea IP
Jupiter rules avatar
drapel in
Deci soluția este aceasta. E-mail trimis de la utilizatorii din sistem... folosesc filtrul de conținut pentru a verifica semnătura. E-mail primit, folosesc codul de stil de listare gri, dar verific utilizatorul în sistem, dacă nu autentifică-te la maillog ca e-mail eșuat. Acesta va fi ales de fail2ban și îl va bloca definitiv după 3 e-mailuri greșite.

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.