Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 发送邮件错误501-服务器上的参数或参数中存在语法错误,但本地系统上不存在语法错误_Apache_Email_Debian_Tomcat7 - Fatal编程技术网

Apache 发送邮件错误501-服务器上的参数或参数中存在语法错误,但本地系统上不存在语法错误

Apache 发送邮件错误501-服务器上的参数或参数中存在语法错误,但本地系统上不存在语法错误,apache,email,debian,tomcat7,Apache,Email,Debian,Tomcat7,我们的Wicket 6 Web应用程序中有一个邮件功能。最近,我不得不将邮件服务器的凭据更改为新的凭据。我在本地系统(操作系统Windows、Tomcat7Web服务器)上测试了它,它运行得非常好。邮件已经寄出,我收到了。 当我在web服务器(OS:Debian)上应用相同的凭据时,我得到以下错误消息:501-参数或参数中的语法错误 我查了好几次邮件地址,但似乎一切都很好。因此,我猜测可能是Tomcat7、Apache2或hoster在服务器上以某种方式阻止了消息(尽管我打电话给hoster,他

我们的Wicket 6 Web应用程序中有一个邮件功能。最近,我不得不将邮件服务器的凭据更改为新的凭据。我在本地系统(操作系统Windows、Tomcat7Web服务器)上测试了它,它运行得非常好。邮件已经寄出,我收到了。 当我在web服务器(OS:Debian)上应用相同的凭据时,我得到以下错误消息:501-参数或参数中的语法错误

我查了好几次邮件地址,但似乎一切都很好。因此,我猜测可能是Tomcat7、Apache2或hoster在服务器上以某种方式阻止了消息(尽管我打电话给hoster,他们告诉我他们的防火墙没有阻止任何传出信号)。然而,使用旧的凭证,邮件服务运行得非常好。因此,并非所有输出信号都被阻断

我对这种服务器配置不是很有经验。谁能给我一个提示,我必须在哪里检查配置。谢谢你的支持

编辑

为了发送邮件,我们使用spring框架的嵌入式javamail服务。代码如下所示:

public class PrMailSendServiceImpl implements IPrMailSenderService{
    private JavaMailSenderImpl javaMailSenderService;
    private String defaultEmailFrom = "a@b.com";
    private String defaultEmailTo;
    public void sendEmail(String toEmail, String mailSubject, String mailContent) throws MessagingException {
        MimeMessage msg = javaMailSenderService.createMimeMessage();
        MimeMessageHelper mime = new MimeMessageHelper(msg, true, "UTF-8");
        mime.setText(mailContent, true);
        mime.setSubject(mailSubject);
        mime.setTo(toEmail);
        mime.setFrom(defaultEmailFrom); 
        javaMailSenderService.send(msg); 
    }
/*getter and setter*/
}
执行send方法时发生所述错误

spring-context.xml文件包含以下配置:

<bean id="javaMailSenderService" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="mrvnet.kundenserver.de" />
    <property name="port" value="25" />
    <property name="username" value="my@mail.com" />
    <property name="password" value="myPassword" />

    <property name="javaMailProperties">
       <props>
              <prop key="mail.smtp.auth">true</prop>
              <prop key="mail.smtp.starttls.enable">true</prop>
           </props>
    </property>
</bean>

<bean id="mailSendService"  class="de.virtualsolution.procon.service.impl.PrMailSendServiceImpl">
    <property name="javaMailSenderService"><ref bean="javaMailSenderService" /></property>
    <property name="defaultEmailFrom"><value>my@mailcom</value></property>
</bean>

真的
真的
my@mailcom

我解决了这个问题。我从他那里得到了答案

简单邮件传输协议RFC规定使用HELO和EHLO。 SMTP对话中HELO/EHLO的无效使用是您的问题。 大多数邮件传输代理(MTA)执行DNS (A-和PTR-资源记录)验证 在SMTP HELO上给定的域名上 和EHLO命令。这可能违反RFC 2821, 因此,默认情况下,电子邮件通常不会被拒绝。 换句话说,EHLO和HELO通常 需要FQDN客户必须在 启动邮件事务

解决方案(请参阅)

在我们的服务器上,我们有几个子域。因此,调用
InetAddress.getLocalHost().getHostName()
时引发异常。因此,为了手动设置直升机所需的主机名,我在spring-context.xml中添加了行
my.server.host.name

现在看来:

<bean id="javaMailSenderService" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="mrvnet.kundenserver.de" />
    <property name="port" value="25" />
    <property name="username" value="my@mail.com" />
    <property name="password" value="myPassword" />

    <property name="javaMailProperties">
       <props>
              <prop key="mail.smtp.auth">true</prop>
              <prop key="mail.smtp.starttls.enable">true</prop>
              <prop key="mail.smtp.localhost">my.server.host.name</prop>
           </props>
    </property>
</bean>

<bean id="mailSendService"  class="de.virtualsolution.procon.service.impl.PrMailSendServiceImpl">
    <property name="javaMailSenderService"><ref bean="javaMailSenderService" /></property>
    <property name="defaultEmailFrom"><value>my@mailcom</value></property>
</bean>

真的
真的
my.server.host.name
my@mailcom

我解决了这个问题。我从他那里得到了答案

简单邮件传输协议RFC规定使用HELO和EHLO。 SMTP对话中HELO/EHLO的无效使用是您的问题。 大多数邮件传输代理(MTA)执行DNS (A-和PTR-资源记录)验证 在SMTP HELO上给定的域名上 和EHLO命令。这可能违反RFC 2821, 因此,默认情况下,电子邮件通常不会被拒绝。 换句话说,EHLO和HELO通常 需要FQDN客户必须在 启动邮件事务

解决方案(请参阅)

在我们的服务器上,我们有几个子域。因此,调用
InetAddress.getLocalHost().getHostName()
时引发异常。因此,为了手动设置直升机所需的主机名,我在spring-context.xml中添加了行
my.server.host.name

现在看来:

<bean id="javaMailSenderService" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="mrvnet.kundenserver.de" />
    <property name="port" value="25" />
    <property name="username" value="my@mail.com" />
    <property name="password" value="myPassword" />

    <property name="javaMailProperties">
       <props>
              <prop key="mail.smtp.auth">true</prop>
              <prop key="mail.smtp.starttls.enable">true</prop>
              <prop key="mail.smtp.localhost">my.server.host.name</prop>
           </props>
    </property>
</bean>

<bean id="mailSendService"  class="de.virtualsolution.procon.service.impl.PrMailSendServiceImpl">
    <property name="javaMailSenderService"><ref bean="javaMailSenderService" /></property>
    <property name="defaultEmailFrom"><value>my@mailcom</value></property>
</bean>

真的
真的
my.server.host.name
my@mailcom

没有代码、配置等无法说明。这个问题似乎与邪恶无关,告诉我们什么是邮件发送软件是有用的。在您看到这个错误的地方…感谢您的评论和支持。我已经添加了邮件配置。如果你需要更多的信息,请告诉我。很抱歉耽搁了,但我正在度假:-)没有代码,配置等无法说明。这个问题似乎与邪恶无关,告诉我们什么是邮件发送软件是有用的。在您看到这个错误的地方…感谢您的评论和支持。我已经添加了邮件配置。如果你需要更多的信息,请告诉我。抱歉耽搁了,我正在度假:-)