У меня есть почтовый сервер «example.com», который пересылает все электронные письма с получателем «me@example.com» на «me@gmail.com». На моем почтовом сервере работает Postfix, и он использует механизм virtual_alias_maps для выполнения пересылки. У меня также установлены записи SPF для example.com:
v=spf1 a include:aspmx.googlemail.com ~all
Проблема в том, что всякий раз, когда кто-то доставляет почту на адрес «me@example.com», Gmail проверяет записи SPF example.com на соответствие IP-адресу example.com! Я думал, что он должен проверять исходный IP-адрес отправителя.
Например, я использую свой ноутбук с домашним подключением к Интернету. Я подключаюсь к почтовому серверу example.com следующим образом:
$ telnet example.com 25
20 example.com ESMTP Postfix (Debian/GNU)
HELO my-laptop.local
250 example.com
MAIL FROM:<me@gmail.com>
250 2.1.0 Ok
RCPT TO:<me@example.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: me@gmail.com
To: me@example.com
Subject: test
test
.
250 2.0.0 Ok: queued as CE5F42200F9
Теперь, когда я открываю это письмо в Gmail и просматриваю его источник, я вижу следующие заголовки:
Delivered-To: me@gmail.com
Received: by 10.231.219.195 with SMTP id hv3csp61494ibb;
Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Received: by 10.229.135.5 with SMTP id l5mr2360326qct.5.1342257358291;
Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Return-Path: <me@gmail.com>
Received: from example.com [EXAMPLE.COM's IP ADDRESS HERE]
by mx.google.com with ESMTP id u9si4262071qcv.89.2012.07.14.02.15.58;
Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Received-SPF: neutral (google.com: [EXAMPLE.COM's IP ADDRESS HERE] is neither permitted nor denied by domain of me@gmail.com) client-ip=[EXAMPLE.COM's IP ADDRESS HERE];
Authentication-Results: mx.google.com; spf=neutral (google.com: [EXAMPLE.COM's IP ADDRESS HERE] is neither permitted nor denied by domain of me@gmail.com) smtp.mail=me@gmail.com
Date: Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Message-Id: <500138ce.c995e50a.6e4a.ffffd12aSMTPIN_ADDED@mx.google.com>
Received: from my-laptop.local ([LAPTOP's IP ADDRESS HERE])
by example.com (Postfix) with SMTP id CE5F42200F9
for <me@example.com>; Sat, 14 Jul 2012 09:15:44 +0000 (UTC)
From: me@gmail.com
To: me@example.com
Subject: test
Как вы можете видеть в Received-SPF и Authentication-Results, записи SPF проверяются по [IP-АДРЕСУ EXAMPLE.COM] вместо [IP-АДРЕС LAPTOP].
Почему это происходит и как решить эту проблему?
Google [или любой другой] проверит spf по тому IP-адресу, который они видят при подключении к ним. в этом случае это будет IP-адрес вашего постфиксного сервера; вы не можете это исправить - это задумано ....
по дизайну spf имеет "проблему" с пересылкой если сообщение не было «переупаковано» и адрес отправителя не был заменен на адрес отправителя.