我试图通过sendmail发送邮件,并阻止他们排队。 我只想要发送电子邮件,这是迄今为止的一个极端的问题。
在sendmail.cf和submit.cf中都有这样的设置:
O QueueLA=99
在邮件日志中,写入的邮件被发送并排队。 严重的是,这不是很令人困惑吗?
Feb 10 17:04:34 nnn sendmail[27910]: r1AG4Q0V027910: [email protected], [email protected] (33/33), delay=00:00:08, xdelay=00:00:04, mailer=relay, pri=30391, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (r1AG4U09027911 Message accepted for delivery) Feb 10 17:04:36 nnn sm-mta[27913]: r1AG4U09027911: to=<[email protected]>, delay=00:00:06, xdelay=00:00:02, mailer=esmtp, pri=120589, relay=mail1.someone.com. [207.106.200.39], dsn=2.0.0, stat=Sent (Queued! 1360512372 qp 15149 <[email protected]>)
你为什么要改变这个? 这正是sendmail应该如何运作的。 Sendmail,在确认原始发件人已接受邮件之前,将其保存在硬盘上的队列中。 然后拿起它并保留实体副本,直到下一个收件人确认收到。 这就是sendmail如何确保在系统崩溃或者sendmail崩溃的情况下邮件不会丢失。 由于各种原因,Sendmail也会延迟邮件。 有时,其他MTA不能控制延迟电子邮件(networking问题,系统负载,灰色列表)。 它需要安全地存储邮件的地方。
电子邮件不是像IM那样的即时交付机制。 在正常情况下等待2秒。
当您看到其他邮件服务器stat = Sent:relay = mail1.someone.com时,就会发送它。 [207.106.200.39],dsn = 2.0.0,stat =发送
SMTP不保证电子邮件将到达目的地; 这是一个尽力而为的传送机制,没有关于stream量命运的同步端到端反馈。 您要发送邮件的服务器必须直接告诉您是否接受最终传送的邮件,但不需要同步传送邮件(以后可以存储它们而不会告诉您),也不需要直接传送邮件(path有多跳)。 实际上,几乎所有的SMTP守护进程都会对邮件进行排队。
由于被垃圾邮件发送者滥用而未得到广泛支持的传递和阅读收据旨在克服这一限制。 此外,服务器后面的服务器可以根据自己的select在将来某个时间向您发送通知,如果他们在通过它的初始服务器接受它之后拒绝了您的消息,但不是必需的。
你的应用程序应该把下一跳的接受视为成功案例。 这是SMTP会一直给你的最可靠的反馈。
经过一番研究,我发现括号中的消息(Queued!1360512372 qp 15149 <[email protected]>)是来自接收服务器的消息。
这意味着:
下面是我如何得到我的答案的一些解释: freebsd 8邮件日志状态,这是什么意思? 从我看来可靠的答案中引用了一些引号:
“发送状态条目意味着远程服务器接受了该消息。”
“状态条目括号中的注释是远程服务器在发送邮件时给出的答复,这对于查看邮件被拒绝,延期或保留的原因很有用。