У меня есть postfix с dovecot, установленный на Ubuntu 13.10. Я отправляю электронные письма через приложение узла (используя шаблоны электронной почты).
Если я отправлю электронное письмо от noreply@mydomain.com
к myacccount@gmail.com
(электронная почта 1), запись spf проходит. Если я отправлю электронное письмо от noreply@mydomain.com
к support@mydomain.com
(электронная почта 2), запись spf не выполняется.
Моя запись spf:
v=spf1 a mx ~all
Я пробовал вариант, указав ip, но получаю тот же проход / softfail для писем 1 и 2.
Я связал свои электронные письма @ mydomain.com с gmail, поэтому могу читать их оттуда, а также проверять заголовки из gmail.
Вот заголовок для электронная почта 1, который проходит:
Delivered-To: myaccount@gmail.com
Received: by 10.220.131.9 with SMTP id v9csp9729vcs;
Thu, 3 Apr 2014 02:07:44 -0700 (PDT)
X-Received: by 10.204.243.137 with SMTP id lm9mr3945288bkb.33.1396516062351;
Thu, 03 Apr 2014 02:07:42 -0700 (PDT)
Return-Path: <noreply@mydomain.com>
Received: from mydomain.com (mydomain.com. [81.4.107.88])
by mx.google.com with ESMTPS id de1si2116722bkc.265.2014.04.03.02.07.41
for <myaccount@gmail.com>
(version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
Thu, 03 Apr 2014 02:07:41 -0700 (PDT)
Received-SPF: pass (google.com: domain of noreply@mydomain.com designates 81.4.107.88 as permitted sender) client-ip=81.4.107.88;
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of noreply@mydomain.com designates 81.4.107.88 as permitted sender) smtp.mail=noreply@mydomain.com
Received: from [127.0.0.1] (mydomain [127.0.0.1])
(Authenticated sender: username)
by mydomain.com (Postfix) with ESMTPA id 2FE0730A095F
for <myaccount@gmail.com>; Thu, 3 Apr 2014 05:07:41 -0400 (EDT)
X-Mailer: Nodemailer (0.6.1; +http://github.com/andris9/nodemailer;
smtp/0.3.23)
Date: Thu, 03 Apr 2014 09:07:41 GMT
Message-Id: <688fb886bd83cff1bb5e299cb01e69@mydomain.com>
From: noreply@mydomain.com
To: myaccount@gmail.com
Subject: Welcome to mydomain
Вот заголовок для электронная почта 2, что не удается:
Delivered-To: myaccount@gmail.com
Received: by 10.220.131.9 with SMTP id v9csp9756vcs;
Thu, 3 Apr 2014 02:08:20 -0700 (PDT)
X-Received: by 10.220.103.141 with SMTP id k13mr2007429vco.25.1396516099631;
Thu, 03 Apr 2014 02:08:19 -0700 (PDT)
Authentication-Results: mx.google.com;
spf=softfail (google.com: best guess record for domain of transitioning noreply@mydomain.com does not designate <unknown> as permitted sender) smtp.mail=noreply@mydomain.com
Received-SPF: softfail (google.com: best guess record for domain of transitioning noreply@mydomain.com does not designate <unknown> as permitted sender)
Received: by 10.220.241.77 with POP3 id ld13mf1851813vcb.12;
Thu, 03 Apr 2014 02:08:19 -0700 (PDT)
X-Gmail-Fetch-Info: support@mydomain.com 3 mail.mydomain.com 110 support
Return-Path: <noreply@mydomain.com>
X-Original-To: support@mydomain.com
Delivered-To: support@mydomain.com
Received: from [127.0.0.1] (mydomain [127.0.0.1])
(Authenticated sender: username)
by mydomain.com (Postfix) with ESMTPA id 2DF0730A095E
for <support@mydomain.com>; Thu, 3 Apr 2014 05:07:41 -0400 (EDT)
X-Mailer: Nodemailer (0.6.1; +http://github.com/andris9/nodemailer;
smtp/0.3.23)
Date: Thu, 03 Apr 2014 09:07:41 GMT
Message-Id: <732468ffa47870963332c0e2dcebf3@mydomain.com>
From: noreply@mydomain.com
To: support@mydomain.com
Subject: New user signed-up
Content-Type: multipart/alternative;
boundary="----Nodemailer-0.6.1-?=_1-1396516061189"
MIME-Version: 1.0
Я не думаю, что проблема связана с кодом node.js, который отправляет электронные письма, поскольку они оба используют одни и те же транспорты и логины. Вот упрощенная, но все же длинная версия кода:
var transport = nodemailer.createTransport("SMTP", {
service: "mydomain.com",
auth: {
user: "username",
pass: "password"
}
})
//THIS EMAIL FAILS SPF CHECK
exports.send_new_registration = function(username, email){
emailTemplates(templatesDir, function(err, template) {
console.log("Attempting to send email.");
if (err) {
console.log(err);
} else {
var locals = {
email : email,
username :username
};
// Send a single email
template('new_user', locals, function(err, html, text) {
if (err) {
console.log(err);
} else {
transport.sendMail({
from: 'noreply@mydomain.com',
to: 'support@mydomain.com',
subject: "New user signed-up",
html: html,
// generateTextFromHTML: true,
text: text
}, function(err, responseStatus) {
if (err) {
console.log(err);
} else {
console.log(responseStatus.message);
}
});
}
});
}
//THIS EMAIL PASSES SPF CHECK
exports.send_confirmation_email = function(email, token){
var link = "https://mydomain.com/email-confirmation/" + token;
emailTemplates(templatesDir, function(err, template) {
console.log("Attempting to send email.");
if (err) {
console.log(err);
} else {
var locals = {
link : link
};
// Send a single email
template('register', locals, function(err, html, text) {
if (err) {
console.log(err);
} else {
transport.sendMail({
from: 'noreply@mydomain.com',
to: email,
subject: "Welcome to mydomain",
html: html,
// generateTextFromHTML: true,
text: text
}, function(err, responseStatus) {
if (err) {
console.log(err);
} else {
console.log(responseStatus.message);
}
});
}
});
}
});
}
Я не думаю, что это актуально, но мне еще предстоит заставить TLS работать с postfix. Я также пытался получить postfix-policyd-spf-perl
работает, безуспешно, пока. При отправке электронного письма в мою учетную запись из моей учетной записи добавляется дополнительный заголовок. Я предполагаю, что это связано, но я не уверен.
К вашему сведению, если я добавлю check_policy_service unix:private/policy-spf
к моему /etc/postfix/main.cf
, дополнительный заголовок я вижу в письме от noreply@mydomain.com
к support@mydomain.com
является:
Received-SPF: softfail (mydomain.com: Sender is not authorized by default to use
'support@mydomain.com' in 'mfrom' identity, however domain is not currently prepared for false
failures (mechanism '~all' matched)) receiver=mydomain.com; identity=mailfrom; envelope-
from="support@mydomain.com"; helo="[an_ip]"; client-ip=a_diff_ip
Я добавляю это только потому, что не уверен, связано ли это с проверкой программного обеспечения Google или нет ...
РЕДАКТИРОВАТЬ: Чтобы прояснить вопрос, мне непонятно, почему, если я отправляю электронное письмо на учетную запись gmail, оно проходит проверку spf, но если я отправляю электронное письмо на свой собственный домен, это не удается.
SPF не подводит. Вы неверно истолковываете результаты.
Google выполняет проверку (правильно), когда почта отправляется на учетную запись GMail. Google также добавляет чек при получении через POP3. Он не знает, откуда он взялся, поэтому отмечает softfail.
Я не уверен, почему Google проверяет электронную почту, полученную по протоколу POP3, но этого не должно быть.
Вам нужно отправить его на адрес, который выполняет свою собственную проверку SPF, и получить его напрямую, а не позволять Google играть с заголовками.