Antispam

Ghid de conectare

Stalwart Mail Server

Stalwart trimite mesajele la analiză prin protocolul milter, criptat cu TLS. Se adaugă un singur obiect de configurare, doar pentru mesajele primite din exterior.

1 Pregătire

2 Adaugă milter-ul

În interfața web de administrare Stalwart, la setările MTA, secțiunea Milter, creează o intrare nouă cu valorile de mai jos (denumirile câmpurilor pot diferi ușor între versiuni):

Hostnameantispam.cbsoft.ro
Port11332
Use TLSda · Allow invalid certificates: nu
Temp-fail on errorNU — obligatoriu dezactivat
Stagesdoar DATA
Timeoutsconnect 5s · command 15s · data 30s
Enable (expresie)local_port == 25 → true, altfel false
Temp-fail on error trebuie dezactivat. Valoarea implicită din Stalwart este activat, ceea ce ar face ca, la orice problemă de conectare cu serviciul, toate mesajele primite să fie amânate. Dezactivat, mesajele trec normal (fail-open).

Expresia local_port == 25 trimite la analiză doar mesajele primite de la alte servere, nu și pe cele trimise de utilizatorii tăi autentificați (porturile 587/465) — aceeași condiție pe care o folosește Stalwart în setările sale implicite.

Configurare prin API (JMAP), fără interfața web

În Stalwart 0.16 setările sunt obiecte în registru. Obiectul este de tip x:MtaMilter:

curl -s -u ADMIN:PAROLA -X POST https://mail.domeniul-tau.ro/jmap/ \
  -H 'Content-Type: application/json' -d '{
  "using": ["urn:ietf:params:jmap:core", "urn:stalwart:jmap"],
  "methodCalls": [["x:MtaMilter/set", {"create": {"antispam": {
    "hostname": "antispam.cbsoft.ro",
    "port": 11332,
    "useTls": true,
    "allowInvalidCerts": false,
    "tempFailOnError": false,
    "timeoutConnect": 5000,
    "timeoutCommand": 15000,
    "timeoutData": 30000,
    "stages": {"data": true},
    "enable": {"match": {"0": {"if": "local_port == 25", "then": "true"}}, "else": "false"}
  }}}, "c0"]]}'

Verificare: x:MtaMilter/get cu {"ids": null}. Cererea a fost testată pe Stalwart 0.16 în modul de recuperare (STALWART_RECOVERY_MODE=1, serverul oprit câteva secunde) — util dacă nu ai parola de administrator.

3 Testează

  1. Trimite din exterior un mesaj către o căsuță de pe server. În sursa mesajului:
    X-Antispam-Status: ham; mode=observe
    X-Antispam-Score: 1.50 / 15.00
    X-Antispam-Action: no action
  2. Test de spam: un mesaj care conține în corp
    XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
    În observe ajunge cu X-Antispam-Action: reject; în enforce e respins cu 550 5.7.1.
  3. Dacă headerele lipsesc, caută în log-ul Stalwart evenimentele milter: o eroare de conexiune înseamnă firewall sau IP neînregistrat la noi. Mesajele trec oricum.

4 Mutarea spam-ului în Junk

În modul enforce, spam-ul care nu e respins primește X-Spam: Yes. Un script Sieve îl mută automat în Junk. Pentru tot serverul îl poți adăuga ca script de sistem; fiecare utilizator îl poate adăuga și singur, din webmail (Filtre / Sieve):

require ["fileinto"];
if header :is "X-Spam" "Yes" {
    fileinto "Junk";
    stop;
}

Filtrul propriu Stalwart rămâne activ în paralel. După ce ai încredere în rezultate, poți reduce rolul lui ca să nu se facă de două ori aceeași muncă.

5 Dezactivare

Șterge intrarea Milter din interfața de administrare (sau x:MtaMilter/set cu {"destroy": ["ID"]}). Efectul e imediat; mail-ul nu e afectat.