#php #email #sendmail #gmail #spam
Добрый день, у меня проблема с регистрацией пользователей на сайте, гугл все письма
подтверждения считает спамом, из за этого я вижу многие пользователи просто забивают
на регистрацию и уходят. Какие заголовки нужно передавать что бы все было ок, или что
делать? Двиг сайта самописный, на php.
Delivered-To: *******@gmail.com
Received: by 10.25.208.143 with SMTP id h137csp471735lfg;
Thu, 23 Feb 2017 06:55:46 -0800 (PST)
X-Received: by 10.28.236.93 with SMTP id k90mr2954531wmh.40.1487861746329;
Thu, 23 Feb 2017 06:55:46 -0800 (PST)
Return-Path:
Received: from *******.freedomain.thehost.com.ua ([176.114.3.106])
by mx.google.com with ESMTPS id 196si6753159wmw.120.2017.02.23.06.55.45
for
(version=TLS1_2 cipher=AES128-SHA bits=128/128);
Thu, 23 Feb 2017 06:55:46 -0800 (PST)
Received-SPF: softfail (google.com: domain of transitioning no-reply@mysite.net does
not designate 176.114.3.106 as permitted sender) client-ip=176.114.3.106;
Authentication-Results: mx.google.com;
spf=softfail (google.com: domain of transitioning no-reply@mysite.net does
not designate 176.114.3.106 as permitted sender) smtp.mailfrom=no-reply@mysite.net
Message-ID: <58aef7f2.cd161c0a.52af6.98a5SMTPIN_ADDED_BROKEN@mx.google.com>
X-Google-Original-Message-ID: <172562218.20170223165545mysite.net>
Received: from *********.freedomain.thehost.com.ua ([176.114.3.106] helo=mysite.net)
by *********.freedomain.thehost.com.ua with esmtpa (Exim 4.82) (envelope-from )
id 1cguo5-0002y0-GN for myEmailName@gmail.com; Thu, 23 Feb 2017 16:55:45 +0200
Date: Thu, 23 Feb 2017 16:55:45 +0200
From: "Робот сервера mysite.net"
X-Mailer: The Bat! (v3.99.3) Professional
Reply-To: "Робот сервера mysite.net"
X-Priority: 3 (Normal)
To: "myEmailName"
Subject: Создание аккаунта(mysite.net)
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
Добро пожаловать на mysite.net
Ответы
Ответ 1
Received-SPF: softfail говорит о том, что не настроен SPF.
Добавьте в файл DNS зоны(mysite.net), запись:
mysite.net. IN TXT "v=spf1 +a +mx -all"
Также стоит настроить DKIM.
Настройка для Ubuntu сервера:
sudo apt update
sudo apt install opendkim opendkim-tools
vim /etc/opendkim.conf
Правим конфиг:
Syslog yes
UMask 002
Domain mysite.net
KeyFile /etc/mail/dkim.key
Selector mail
SubDomains yes
OversignHeaders From
Socket inet:8891@localhost
Генерируем ключи:
opendkim-genkey --domain=mysite.net --selector=mail --verbose
sudo mv mail.private /etc/mail/dkim.key
sudo chown root:root /etc/mail/dkim.key
sudo chmod 400 /etc/mail/dkim.key
cat mail.txt # Публичный ключ для записи домена
Настраиваем sendmail:
cd /etc/mail
echo "INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')dnl" >> sendmail.mc
m4 sendmail.mc > sendmail.cf
service opendkim restart
service sendmail restart
Добавляем TXT запись mail._domainkey:
v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3D...
Указанная в Content-type кодировка не относится к заголовкам письма.
Как следствие Subject нужно кодировать. На php это делается так:
$subject = mb_encode_mimeheader($subject, 'UTF-8', 'B', "\r\n", strlen('Subject: '));
Ответ 2
Google может посчитать письмо спамом по множеству причин, но вам следует обратить
внимание на это:
Received-SPF: softfail (google.com: domain of transitioning
no-reply@mysite.net does not designate 176.114.3.106 as permitted sender)
Скорее всего у вас в качестве адреса отправителя указан адрес, доменное имя которого
не соответствует IP домена, с которого отправляется почта. Попробуйте указать реальный
почтовый ящик, IP адрес домена которого является 176.114.3.106.
Ответ 3
Это самое важное, пропишите в DNS своего домена TXT SPF запись примерно следующего
содержания: mysite.net. IN TXT "v=spf1 +a +mx +ip4:176.114.3.106 -all". Так же почитайте
по поводу DKIM
Если ваш хостер позволяет менять PTR запись для вашего ip поставьте в нее имя вашего
домена с которого отправляется почта. Т.е. что бы PTR запись для ip давала такое же
имя для которого A запись указывает на этот ip. Сейчас там стоит ....freedomain.thehost.com.ua
который например спамассасину не нравится видимо из за наличия слова free а адресе.
Текущее состояние проверяется просто nslookup ip-с-которого-шлется-почта
В вашем письме нет Message-ID, его добавляет уже гугл при получении. Должно быть
уникальное Message-ID оканчивающееся на @ваш-домен. Обычно это сам делает какой нибудь
sendmail на вашей машине, через который вы по идее должны отправлять почту.
Напишите каким нибудь почтовым клиентом письмо с такой же темой, как вы отправляете
и посмотрите как кодируется заголовок. Сейчас у вас там просто текст, а должно быть
что то вроде Subject: =?UTF-8?B?0KHQvtC30LTQsNC90LjQtSDQsNC60LrQsNGD0L3RgtCwKG15c2l0ZS5u?=
=?UTF-8?B?ZXQp?= Русские буквы открытым текстом в заголовках письма нарушают стандарты.
Напишите побольше текста. В несколько строк. Сейчас spamassasin говорит "Message
body is only a URI in one line of text or for an image"