Egy magyarországi ISP-nél még működik az exim “Sender Verification Callout” funkció. Ez gyakorlatban annyit jelent, hogy a rajta kersztül küldött leveleknél csak akkor fogadja el az SMTP szerverük a levelet, ha előtte az felveszi a címzett domain SMTP kiszolgálójával a kapcsolatot, és egy “fake” e-mail-t próbál küldeni.

Persze vannak oldalak (pl. itt ), amik arra figyelmeztetnek, hogy ez mennyire hülyeség, de sajnos még mindig vannak ilyen szerverek, ahol ez be van kapcsolva… 🙁

Ha ilyen szerver akar nálunk ellenőrizni, akkor lehet hogy greylist-re fut, ami simán elzavarja… Na innentől nem fog levél érkezni ezen a szerveren keresztül…

(Az előzményket megtárgyaltuk a hup.hu-n 😀 )

Megoldás:

1. Kell egy postfix policy szkript. (Legyen a példa kedvéért az /etc/postfix/sender_verification_callout_policy útvonalon. Tulajdonos: nobody. Legyen futtatható.)

#!/bin/bash

while IFS='=' read var val
 do
 case "x${var}" in
  "xhelo_name")
   helo_name=${val};;
  "xprotocol_state")
   protocol_state=${val};;
  "xsender")
   sender=${val};;
  "xrecipient")
   recipient=${val};;
  "x")
   if [ -z ${sender} ]
    then
    if 
     then
     if [ "${protocol_state}" == "RCPT" ]
      then
      /bin/echo -e 'action=ok\n'
      else
      /bin/echo -e 'action=reject Sender Verification abuse\n'
      fi
     else
     /bin/echo -e 'action=dunno\n'
     fi
    else
    /bin/echo -e 'action=dunno\n'
    fi
   exit 0;;
  *) ;;
  esac
 done
exit 0

2. Kapcsoljuk be a master.cf-ben:

svc_policy unix - n n - - spawn
 user=nobody argv=/etc/postfix/sender_verification_callout_policy

3. A main.cf-ben két helyen aktiváljuk:

a. Az smtpd_recipient_restrictions részben:

smtpd_recipient_restrictions=
...
 check_policy_service unix:private/svc_policy,
#postgrey
 check_policy_service inet:127.0.0.1:10023,
...
 permit

b. Az smtpd_data_restrictions részben:

smtpd_data_restrictions=
...
 check_policy_service unix:private/svc_policy,
 permit