JavaMail JamesServer: электронная почта помечена как спам
Письма, отправленные с JamesServer, помечаются как спам. Я использую JavaMail для подключения к JamesServer для отправки электронных писем.
Для проверки спама я использую сайт mail-tester.com. Этот сайт сообщает мне, что электронная почта помечена как спам с отрицательным порогом ниже:
-3.603 HELO_LOCALHOST HELO_LOCALHOST
Я наткнулся на параметры helo и ehlo, основанные на сайте. Чтобы переопределить helo и ehlo, я использовал свойство mail.smtp.localhost. Но я смог изменить его, но я не смог изменить значение helo.
Как мне изменить значение параметра helo?
Вот мой пример кода Java:
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class TestSendMail {
private String fromEmail = "admin@xxxxxxxxxx.com";
public void sendmail() {
Properties properties = new Properties();
final String smtpHost = "xxxxxxxxxx.com";
String port = "25";
String strHostName = smtpHost;
try {
strHostName = InetAddress.getLocalHost().getHostName();
System.out.println(strHostName);
} catch (UnknownHostException e) {
}
properties.put("helo", strHostName );
properties.put("mail.host", strHostName );
properties.put("mail.smtp.localhost", strHostName );
properties.put("mail.smtps.localhost", strHostName);
properties.put("mail.smtp.host", smtpHost);
properties.put("mail.smtp.port", port);
properties.put("mail.smtp.auth", "true");
properties.put("mail.transport.protocol", "smtp");
Session session = Session.getInstance(properties,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(fromEmail,"Welcome123!");
}
});
String toEmail = "web-3a2Lxc@mail-tester.com";
String replyTo = "noreply@" + smtpHost;
String messageBody = "<html><body>Test body</body></html>";
try {
MimeMessage message = new MimeMessage(session);
message.setSentDate(new Date());
message.setFrom(new InternetAddress(fromEmail));
message.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(toEmail));
message.setSubject("Test");
message.setReplyTo(new javax.mail.Address[]
{
new InternetAddress(replyTo)
});
message.setContent(messageBody, "text/html");
Transport.send(message);
System.out.println("Message sent successfully....");
} catch (MessagingException mex) {
mex.printStackTrace();
System.out.println(mex.getMessage());
}
}
public static void main(String[] args) {
TestSendMail send = new TestSendMail();
send.sendmail();
}
}
Вот мой журнал электронной почты, который я получил от mail-tester.com
Received: by mail-tester.com (Postfix, from userid 500) id F01C8A0C53;
Fri, 5 Jun 2015 14:01:09 +0200 (CEST)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail-tester.com
X-Spam-Flag: YES
X-Spam-Level: *****
X-Spam-Status: Yes/6.0/5.0
X-Spam-Test-Scores: FSL_HELO_NON_FQDN_1=0.001,HELO_LOCALHOST=3.603,
HTML_MESSAGE=0.001,MIME_HTML_ONLY=1.105,RDNS_NONE=1.274
X-Spam-Last-External-IP: 128.199.181.189
X-Spam-Last-External-HELO: localhost
X-Spam-Last-External-rDNS:
X-Spam-Date-of-Scan: Fri, 05 Jun 2015 14:01:09 +0200
X-Spam-Report: * 3.6 HELO_LOCALHOST No description available. * 0.0
FSL_HELO_NON_FQDN_1 No description available. * 1.1 MIME_HTML_ONLY BODY:
Message only has text/html MIME parts * 0.0 HTML_MESSAGE BODY: HTML
included in message * 1.3 RDNS_NONE Delivered to internal network by a
host with no rDNS
Received-SPF: None (no SPF record) identity=mailfrom;
client-ip=128.199.181.189; helo=localhost;
envelope-from=admin@xxxxxxxxxx.com; receiver=web-3a2lxc@mail-tester.com
Authentication-Results: mail-tester.com; dmarc=none
header.from=xxxxxxxxxx.com
Received: from localhost (unknown [128.199.181.189])
by mail-tester.com (Postfix) with ESMTP id 2B6E09F862
for <web-3a2Lx@mail-tester.com>; Fri, 5 Jun 2015 14:01:07 +0200 (CEST)
MIME-Version: 1.0
X-UserIsAuth: true
Received: from 122.175.7.239 (EHLO USER-PC) ([122.175.7.239])
by xxxxxxxxxx-01 (JAMES SMTP Server ) with ESMTPA ID 1021366912
for <web-3a2Lx@mail-tester.com>;
Fri, 05 Jun 2015 08:02:40 -0400 (EDT)
Date: Fri, 5 Jun 2015 17:32:44 +0530 (IST)
From: admin@xxxxxxxxxx.com
Reply-To: noreply@xxxxxxxxxx.com
To: web-3a2Lx@mail-tester.com
Message-ID: <17905416.0.1433505764473.JavaMail.USER@USER-PC>
Subject: Test
Return-Path: admin@xxxxxxxxxx.com
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<html><body>Test body</body></html>
Любая помощь приветствуется.
3 ответа
Используете ли вы JavaMail для отправки сообщения на сервер Apache James, который затем отправляет его на mail-tester.com? Если это так, вам нужно беспокоиться о конфигурации Apache James, а не о конфигурации JavaMail. Обратите внимание, что только один из HELO или EHLO используется в одном диалоге SMTP.
Похоже, ваш сервер Apache James использует HELO при обращении к mail-tester.com и не идентифицирует себя должным образом, используя полное DNS-имя вашего сервера. Убедитесь, что на вашем сервере есть DNS-имя (а не только IP-адрес, полученный DHCP), и служба имен на сервере правильно настроена для получения DNS-имени сервера.
Вероятно, это может быть связано с доменом с адресом, т. Е. Admin@xxxxxxxx.com Это не будет разрешено для каких-либо конкретных известных хостов. Попробуйте после удаления. Если ваша почта все еще помечена как СПАМ, вы должны знать фильтры, применяемые на стороне получателя.
$ sudo nano /etc/postfix/main.cf
изменять:myhostname = DOMAIN.TLD
$ sudo systemctl restart postfix