PostFix发邮件,异常返回的问题

发布于 2021-11-25 06:19:35 字数 1081 浏览 840 评论 8

@红薯 你好,想跟你请教个问题:

咨询个用PostFix发邮件的事情,目前发邮件没有问题,可是在客户端(Java main方法来发)发出去后没有任何异常,即使该邮件人不存在。

但是在mail.log中可以看到550 Mailbox not found等错误信息,但是客户端无任何异常,通过163或者QQ的smtp发送,如果邮件人不存在,会抛出如下异常:

javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
	com.sun.mail.smtp.SMTPAddressFailedException: 550 Mailbox not found
	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1607)
	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:887)
	at com.example.web.EmailSenderDriver.sendMsg(EmailSenderDriver.java:551)
	at com.example.web.ThreadMail.run(ThreadMail.java:44)
	at com.example.web.ThreadMail.main(ThreadMail.java:129)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 550 Mailbox not found
	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1458)
	... 4 more

Postfix如何配置才能像163和QQ那样,出错立马返回回来,被客户端捕获,这样就可以知道这封邮件发送失败了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

已下线请稍等 2021-11-30 04:44:50

postfix 的队列机制,返回250表示提交到队列,不是发送的结果

能否改变postfox 的队列机制,实现能即时发送就发,不能发就显示busy,无论成功与否,能返回所有的收件方正确的信息,让smtp客户端知道,再退出

我知道,专业的做法是,通过webhook 来解决这个问题,但需要邮件发送平台才能实现

把昨日还给我 2021-11-30 03:56:04

应该说,postfix 的队列机制,造成做不到这个的吗?

windows的很多 smtp 服务器软件和postfix 机制不同,就可以立刻返回5xx  4xxx

smtp 协议本身也是可以做到的

瀞厅☆埖开 2021-11-30 03:29:32

一般邮件失败后都是系统发给发件人一封包含错误信息的邮件的。

狼亦尘 2021-11-30 02:26:18

因为 SMTP 收到邮件都是放到一个 pool 里,然后再调度进行发送的,所以你没法即时知道发送结果

2021-11-29 23:51:57

回复
正解

流心雨 2021-11-29 16:02:14

那情况就是通过自建的邮件服务器发送邮件,发送出去,在客户端上无法获知是否真的成功,有任何错误只能去mail.log中去获知了。 典型的情况是:相同的邮件往qq邮箱发多了,QQ会拒收,但是在Postfix的发送过程中是没法知道的,只能去mail.log中查询? 如果是这样的话,这点好像很被动,每次都得查mail.log才能知道哪些失败了,哪些成功了。

怎言笑 2021-11-28 04:04:09

SMTP 做不到这个的,能实现这种一般都是内部系统,例如 163 对 163 发,它们可以先检测是否存在然后再发送。

拍不死你 2021-11-25 16:54:33

SMTP 做不到这个的,能实现这种一般都是内部系统,例如 163 对 163 发,它们可以先检测是否存在然后再发送。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文