Назад | Перейти на главную страницу

Настройки SPF для поддоменов, использующих общий почтовый сервер

У меня возникают проблемы с получением субдоменов для прохождения проверок SPF при отправке почты через общий почтовый сервер (узел ретрансляции AKA).

Вот текущая настройка:

MX  10  mail.example.com.

example.com.  TXT  "v=spf1 a mx -all"
sub1          TXT  "v=spf1 include:example.com -all"
sub2          TXT  "v=spf1 a mx -all"

      A  1.2.3.4
mail  A  1.2.3.5
sub1  A  1.2.3.6
sub2  A  1.2.3.7

(Вышеупомянутое - это просто урезанная и "подвергшаяся цензуре" версия моего файла зоны DNS от Linode. Есть также некоторые AAAA записи для поддоменов, но я оставил их для краткости. Записи SPF для sub1 и sub2 имеют разные значения, потому что я экспериментировал, пытаясь заставить это работать.)

mail.example.com работает postfix и настроен как ретранслятор для example.com, sub1.example.com, и sub2.example.com. Все они отлично отправляют электронную почту через почтовый сервер (и также подписываются DKIM), проблема только в SPF.

Когда я отправляю почту с такого адреса, как user@example.com тогда проверки SPF проходят без проблем. Однако, когда я отправляю почту с адреса вроде otheruser@sub1.example.com тогда проверки SPF не пройдут. Очень важно иметь возможность отправлять электронные письма в обоих форматах.

Очевидно, я в некотором роде неправильно понимаю спецификацию SPF. Любое понимание приветствуется!

РЕДАКТИРОВАТЬ 2

Фактически, SPF-запись субдомена со значением "v=spf1 include:example.com -all" похоже, сейчас работает (другое значение все еще не работает). Я предполагаю, что кеш DNS где-то между моим сервером (-ами) и Gmail (который я использовал для проверки прохождения / сбоя SPF) просто необходимо обновить. В любом случае спасибо за помощь.

ИЗМЕНИТЬ 1

Вот (цензурированная) информация заголовка от использования "Показать оригинал" в Gmail:

Delivered-To: bob@gmail.com
Received: by 10.27.176.132 with SMTP id g4csp19468;
    Mon, 6 Oct 2014 09:23:39 -0700 (PDT)
X-Received: by 10.60.223.229 with SMTP id qx5mr2871424.34.1412612619;
    Mon, 06 Oct 2014 09:23:39 -0700 (PDT)
Return-Path: <alice@sub2.example.com>
Received: from mail.example.com (mail.example.com. [01:02::03:04:05:06])
    by mx.google.com with ESMTPS id fi7si2708120.75.2014.10.06.09.23.38
    for <bob@gmail.com>
    (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
    Mon, 06 Oct 2014 09:23:38 -0700 (PDT)
Received-SPF: fail (google.com: domain of alice@sub2.example.com does not designate 01:02::03:04:05:06 as permitted sender) client-ip=01:02::03:04:05:06;
Authentication-Results: mx.google.com;
    spf=hardfail (google.com: domain of alice@sub2.example.com does not designate 01:02::03:04:05:06 as permitted sender) smtp.mail=alice@sub2.example.com;
    dkim=pass header.i=@example.com
Received: from sub2.example.com (sub2.example.com [IPv6:01:02::03:04:07:08])
    by mail.example.com (Postfix) with ESMTPS id 587C7A7;
    Mon,  6 Oct 2014 09:23:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=example.com; s=mail;
    t=1412612618; bh=TN5kedzeI1m7kEkfICUGBMJFkDu6VqIrLGM3ne5ESHQ=;
    h=To:From:Subject:Date:From;
    b=Hr3ivPismDgCfyk5Sf5pVmIX6LQo0J4Gv7mWer7QP/81ZK5CrDv+o0LwR1Q19vPlF
     j0RYKzQpsU2n2r/vqnlj8PY7yEd7pZoaQfByJzY0S4uj8NoyLK3ywVSzRt8c/acjSK
     jMTItp+tmK6ZDALMbhhfSHgvTO0N+uozVTgEeMtU=
Received: by sub2.example.com (Postfix, from userid 1000)
    id 910FF104; Mon,  6 Oct 2014 09:23:36 -0700 (PDT)
To: bob@gmail.com
From: alice@sub2.example.com

Поддомены обычно отправляют электронную почту, используя для адресов родительский домен. Это действительно требует, чтобы идентификаторы пользователей были согласованы между доменами. Однако есть случаи использования для отправки электронной почты из разных субдоменов.

Если вы хотите, чтобы записи SPF для поддоменов работали, вам потребуются записи MX и SPF для каждого поддомена. Ни модель include, ни модель ниже не будут работать без спецификации MX. (Вы можете использовать A:192.0.2.x спецификация для включенной записи SPF.) Попробуйте использовать определение привязки, например:

sub1        IN      A       192.0.2.6
            IN      TXT     "v=spf1 mx -all"
            IN      MX      mail

Поскольку почтовый субдомен находится в вашем домене, вы можете указать MX как либо mail или mail.example.com.. Для другого домена вам всегда нужен полный адрес mail.example.net..

Подумайте о том, чтобы настроить запись SPF для вашего почтового сервера примерно так:

mail        IN      A       192.0.2.5
            IN      AAAA    2001:DB8::5
            IN      TXT     "v=spf1 a -all"

Кажется, у вашего почтового сервера есть IPv6-адрес. Вам необходимо добавить его как запись AAAA в определение почтового сервера, как показано. Если вы хотите, чтобы SPF работал через IPv6, вашему почтовому серверу / службе потребуется фиксированный IP-адрес IPv6.

Хотя это не обязательно для SPF, убедитесь, что записи PTR для субдомена IP-адресов почтовых серверов возвращают его имя. Для IPv4 вам обычно необходимо связаться с вашим провайдером. Для IPv6 вы должны иметь возможность делегировать сетевой блок своему DNS, и вам нужно будет настроить зону.

Postfix отправляет почту через IPv6, если это возможно, но IPv6 example.com (01: 02 :: 03: 04: 05: 06, из заголовков) не указан допустимым в SPF-записи. Либо разрешите этот IP дополнительно, либо ограничьте Postfix только IPv4.

Поскольку мы хотим быть прогрессивными, вы можете выбрать первый вариант :)

Предполагая, что вам нужны sub1 и sub2 для отправки почты, вам нужно вручную добавить их IP-адреса в запись SPF. Создание записи SPF для sub1.example.com работает только в том случае, если ваш адрес электронной почты имеет формат joe@sub1.example.com. Измените свой SPF example.com на следующий:

example.com. TXT "v = spf1 a mx ip4: 1.2.3.6 ip4: 1.2.3.7 -all"

У вас правильный синтаксис, единственный недостаток заключается в том, что запись SPF, в отличие от DKIM, соответствует только домену, с которого, похоже, исходит электронное письмо.