我怎样才能让 sendmail 将大量电子邮件以单个文件的形式发送到单个智能主机目的地。

我怎样才能让 sendmail 将大量电子邮件以单个文件的形式发送到单个智能主机目的地。

sendmail 8.14.x

这个问题与sendmail 是否将所有内容以“单个文件”的形式发送到下游智能主机?但与特定问题相关的信息是分开呈现的。

我有一个具有以下设置的邮件环境:

Application Servers -> sendmail relay -> cloud email service -> internet

下游云服务要求将电子邮件以单个文件的形式智能托管到它们。如果它看到来自同一公共源 IP 的多个同时 SMTP 连接,它会接受一个并推迟其他连接,并出现 400 类错误。显然,这严重限制了出站吞吐量,我们正在与云提供商合作尝试解决此问题。不过,与此同时,我需要找到一种方法让 sendmail 在单个连接中发送所有内容。

乍一看,我认为这个confSINGLE_THREAD_DELIVERY选项可能合适,但我仍然觉得如果队列运行器正在处理延迟消息,而新传入的连接想要立即发送某些消息,那么我会遇到问题。或者更糟的是——队列运行器正忙于处理大型队列,永远不会让任何新消息发送。

我知道这是一个愚蠢的要求,正如我提到的,我们正在与云提供商合作,但与此同时,是否有一个 sendmail 配置可以满足这个要求,同时平衡新消息和排队消息的传递?

答案1

你可以

  1. 使用relay邮件程序传送到智能主机(relay默认使用)
  2. 提高relay邮寄费用,避免“一次性”投递
  3. 使relay邮件程序使用自定义队列组及其更频繁的队列运行周期
  4. 如果上述方法有效,你可以考虑使用持久队列运行器来降低交付延迟

sendmail.mc

dnl Declare relay queue group with queue run period 10m
dnl Do not forget to create /var/spool/mqueue/relay directory 
QUEUE_GROUP(`relay', `P=/var/spool/mqueue/relay I=10m')
dnl OPTIONAL: define minimum time BETWEEN delivery attempt of any message
define(`confMIN_QUEUE_AGE',`25m')dnl

dnl  Make sendmail honor mailers' expensive flag
define(`confCON_EXPENSIVE',`True')dnl
dnl Add F=e "expensive" flag to relay mailer flags
define(`RELAY_MAILER_FLAGS',`e')dnl
dnl make relay mailer select custom queue group for relay mailer
define(`RELAY_MAILER_QGRP',`relay')dnl

相关内容