使用javax.mail和CentOS创建邮件服务器

8
我有一个Java程序,它在旧的Ubuntu机器上安装并使用javax.mail发送邮件。但是,那台机器崩溃了,现在我在新的CentOS机器上运行相同的Java 应用程序。

然而,当我尝试使用mail.smtp.host = 127.0.0.1发送电子邮件时,出现错误“MessagingException: 501 Syntax: HELO hostname”。

我的猜测是,在这个CentOS中,邮件服务器还没有激活。

我该如何配置一个可供javax.mail使用的邮件服务器?

谢谢

5个回答

6

3

当我使用Spring MailSender发送邮件时,遇到了“MessagingException: 501 Syntax: HELO hostname”的相同问题。对我有用的是在javaMailProperties下添加额外的属性“mail.smtp.localhost”,如下所示:

    <!-- JAVA MAIL -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="" />
    <property name="port" value="25" />
    <property name="protocol" value="smtp" />
    <property name="username" value="" />
    <property name="password" value="" />
    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtps.auth">true</prop>
            <prop key="mail.smtps.starttls.enable">true</prop>
            <prop key="mail.smtps.debug">true</prop>
            <prop key="mail.smtp.localhost">localhost</prop>
        </props>
    </property>
</bean>

1
问题在于新机器上的命名服务未正确配置,Java无法找到机器的主机名。SMTP HELO命令需要包括主机名。服务器因缺少而抱怨。打开JavaMail会话调试,您可以看到实际发送的命令。通过将JavaMail属性mail.smtp.localhost设置为要在HELO命令中使用的主机名,可以解决此主机配置问题。

1
我按照网上的指南修复了这个问题,它声称我应该进入/etc/hosts文件,并将127.0.0.1映射到机器的域名。于是我这样做了,但仍然没有解决问题。这就是你所说的吗? - user1034697
1
机器是否有静态IP地址,还是从DHCP获取IP地址?如果它有静态IP地址,则应在/etc/hosts中使用机器名称。如果它从DHCP获取IP地址,则需要反向DNS查找该IP地址以返回有效的主机名。您可能需要与当地的网络专家交谈,以正确设置所有这些内容。 - Bill Shannon

0

在我的情况下,etc/hostname是susetest(而不是linux.company.com)。

将etc/hosts从127.0.0.1 localhost修改为127.0.0.1 localhost susetest(在修改文件时,请确保在localhost之后使用tab键)

记得保存更改,停止postfix,然后启动postfix以重新启动SMTP服务器。

应该可以正常工作。

(将properties.setProperty("mail.smtp.localhost", "ourcompany.com");添加到属性中也解决了问题,但是当你可以找到根本原因时,绕过应该不是解决方法,即使在我的情况下需要花费几天的时间)


下投票的原因是什么?! - Arnold

0

您需要运行sendmail。请参阅此处以获取更多信息。配置sendmail可能是一项繁琐的任务,如果可能的话,您可能希望从旧机器中获取sendmail.cf的配置。

我怀疑(也)您应该设置一些中央MTA(邮件传输代理),使得企业中的所有机器都使用此代理,而不是每个主机运行一个。即不使用localhost


我尝试使用telnet连接到25号端口并发送一封样例邮件,结果该邮件被成功发送。这是否意味着Java应用程序也能正常工作? - user1034697

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接