Категорії
Mail systems Misc, staff, other

[Для початківців] Розслідування однієї помилки SPF

Нещодавно до мене звернувся один користувач з проблемою SPF. Його поштовий сервер видава помилку на прийом пошти від одного домену baddomain.com:

Not authorized by SPF

При цьому, клієнт каже, що якщо перевірити цей baddomain.com на https://mxtoolbox.com, то там немає жодної помилки.

В першу чергу я подивився самі записи SPF через команду dig:

$ dig -t txt baddomain.com +short
"v=spf1 ip4:XXX ip4:YYY include:_spf.google.com include:spf2.esputnik.com -all"
...
"spf2.0/mfrom,pra include:senderid.unisender.com -all"

і перше, що кидається в очі, це різні значення SPF1 і SPF2 і саме SPF2 не дає прийняти листав від baddomain.com. Подивимося, чому так.

Його поштовий сервер мав конфігурацію exim+spfd. man spfd дає вичерпну відповідь, чому так:

versions

           A comma-separated list of SPF version numbers of SPF records that may be used.  1 means that “v=spf1” records should be used.  2 means that “spf2.0” records should be used.  Defaults to 1,2, i.e., uses any SPF records that are available.  Records of a higher version are preferred.

Сам spfd був запущений без versions, тому, логічно, вибирається SPF2, який власне і не дозволяє прийняти пошту.

Як бонус, спробуємо подивитися, як проходить перевірка зі сторони exim:


$ echo -e "identity=gooduser@baddomain.com\nip_address=XX.XX.XX.XX\n" | nc -U /tmp/spfd.sock
result=fail
local_explanation=baddomain.com: Sender is not authorized by default to use 'gooduser@baddomain.com' in 'mfrom' identity (mechanism '-all' matched)
authority_explanation=Rejected by SPF record
received_spf_header=Received-SPF: fail (baddomain.com: Sender is not authorized by default to use 'gooduser@baddomain.com' in 'mfrom' identity (mechanism '-all' matched)) receiver=mail.gooddomain.ua; identity=mailfrom; envelope-from="gooduser@baddomain.com"; client-ip=XX.XX.XX.XX
spf_record=spf2.0/mfrom,pra include:senderid.unisender.com -all
smtp_comment=Rejected by SPF record
header_comment=baddomain.com: Sender is not authorized by default to use 'gooduser@baddomain.com' in 'mfrom' identity (mechanism '-all' matched)

де, gooduser@baddomain.com – адреса відправника, XX.XX.XX.XX – власне IP звідки відправлється лист.

Тут є 2 нюанси:

  • unix socket /tmp/spfd.sock має права 0660 Debian-exim:Debian-exim і тому треба бути в групі Debian-exim, щоб мати змогу підключитися до нього
  • nc (netcat) в Linux не маж опцію підключення до unix socket’y, тому треба ставити пакет netcat-openbsd в якому ця опція є.

І головне питання, як бути далі? Я рекомендував написати у техпідтримку цього baddomain.com а зі сторони користуча додати у whitelist цей домен, якщо листування з ним дуже важливе. Як додати у whitelist – можна подивитися тут

Висновок: не завжди треба довіряти, навіть відомим сервісам по перевірці.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff