• Home
  • Blog
    • Technews
    • Pensiero del giorno
    • FILM
  • Informatica
  • Fotografie
    • Concerti
    • Vacanze
    • Varie
  • Acqua
  • La Wishlist

Exim, Amavis e lo SPAM

Domenica 27 Gennaio 2008 12:23

Exim questo sconosciuto. Debian ed altre distribuzioni ora te lo installano di default come MTA, ma io appena arrivo prendo e lo sostituisco con Postfix; lo conosco di più, ci ho basato buona parte delle mie attività sulla posta elettronica fin dalle sue prime versioni, dopo aver patito non poco con Sendmail ed i suoi file di configurazione.

Postfix è perfetto, arrotondato, filante. Exim mi è invece sempre stato incomprensibile, sarà per il poco impegno profuso. Ora però c'è un cliente che ha problemi con Exim 4.40, vuole passare a un sistema di posta più serio ma nel frattempo ha ritardi di consegna inaccettabili sull'attuale sistema. Oltre ad una serie di configurazioni di default fatte per un delivery locale (limiti troppo stringenti sui processi in esecuzione), quello che veramente crea problemi a questo server è il quantitativo di merda che accetta anche se, già ad un primo controllo, sarebbe da rifiutare.

Nelle configurazioni suggerite di Exim + Amavis infatti viene proposta una prima regola, nella sezione router, corretta ma in grado di far bypassare tutti i controlli stabiliti dalle ACL. Come mai? Boh... fatto sta che è così. La prima cosa da fare è quindi mettere davanti al router Amavis un router di controllo come questo:


dnslookup_pre:
   driver = dnslookup
   domains = ! +local_domains
   condition =  "${if eq {$interface_port}{10025} {0}{1}}"
   verify_only
   ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8

Questo aiuta ma non risolve; infatti le verifiche a livello di ACL che vengono fatte da Exim sono ridicole e anche quella che sembrerebbe una buona idea e cioè:


verify  = sender/callout=20s

Si dimostra una pugnalata. Viene accettata infatti posta proveniente da domini non esistenti, mentre non viene accettata da server che, alla verifica di Exim (una sessione SMTP dove un destinatario vuoto manda al mittente della mail che sta processando), si rifiutano di collaborare per policy interne discutibili, come per MDeamon.

Il risutato è quindi opposto a quello voluto. Exim di default infatti non verifica l'esistenza del dominio mittente, cosa facile da fare verificando che quello che viene dopo la "@" del mittente sia un record A (pessimo modo di fare posta elettronica) oppure abbia un record MX. Per farlo basta sostituire nell'ACL al posto del verify quanto segue:


# Use helo if null sender
warn    senders     = :
        set acl_m1  = $sender_helo_name

# If not use sender's domain
warn    !senders    = :
        set acl_m1  = $sender_address_domain

# Find MX servers
warn    set acl_m2  = ${lookup dnsdb{mx=$acl_m1}{yes}{no}}

# Lookup hostnames
warn    set acl_m3  = ${lookup dnsdb{a=$acl_m1}{yes}{no}}

deny    condition = ${if or {{eq {$acl_m2}{yes}} \
                               {eq {$acl_m3}{yes}}}\
                               {0}{1}}
        message = Warning: $acl_m1 not exists

Il caso per ora è risolto, ma spero che quanto prima il cliente si decida a migrare a qualcosa di meglio, così come dovresti fare tu che stai leggendo. 

 

Twitter status

Euro-convertitore: vintage o attualissimo? #buonanotte http://t.co/3iLU9SGn
I am watching Midnight In Paris. http://t.co/c79JyA2o
Quale luce non elettrica dovrei avere su un'auto al distributore? #buonanotte http://t.co/SjAed7UB
 

Meteo

Anguillara Sabazia: 16.9 °C
Genova Albaro: 21.2 °C

Temperatura Casa: 22.1 °C
Pressione Casa: 978.0 hPa
Umidità Casa: 65 %
Pioggia ultime 24h: 0.0 mm