我们想部署一个大容量的 SMTP 服务器(双重选择加入列表),但发现我们的两个 Ubuntu 服务器大约需要 1 秒才能发送一条消息。
手动发送电子邮件时,在关闭消息的数据部分(L#3 和 L#4 之间,见下文)后会发生延迟,在我们看来,好像 Postfix 在将项目添加到活动队列时速度很慢。
DATA
354 End data with <CR><LF>.<CR><LF>
Message goes here
.
250 2.0.0 Ok: queued as 0DB032015E
我不熟悉 Postfix,希望得到任何帮助。我们的服务器是新安装的 Ubuntu 9.10 机箱,带有 RAID1 驱动器,使用 hdparam 报告的速度约为 60mb/秒。我们尝试过 in_flow_delay 等设置,但运气不佳。
附加信息
谢谢你的提示。看来磁盘速度对其他人来说是一个限制因素,所以我想先介绍一下这一点。
至于 DNS,服务器设置了正确的 FQDN 和反向。一开始没有 DNS 服务器,并且绑定设置为本地缓存服务器也没有太大改进。需要注意的是,我确实注意到日志中有一行显示:delay=0.79,如果这能给任何人一些想法的话。
后配置-n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
debug_peer_list = octane.to
inet_interfaces = all
inet_protocols = ipv4
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = inferno.octane.to.local, octane.to.local, localhost
myhostname = inferno.octane.to
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
mail.log,已清理
smtpd[3413]: improper command pipelining after HELO from localhost[127.0.0.1]
smtpd[3413]: 3CFEB20160: client=localhost[127.0.0.1]
cleanup[3417]: 3CFEB20160: message-id=<[email protected]>
qmgr[3392]: 3CFEB20160: from=<[email protected]>, size=360, nrcpt=1 (queue active)
smtpd[3413]: disconnect from localhost[127.0.0.1]
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 220 hotrod.octane.to ESMTP Sendmail 8.13.8/8.13.8; Wed, 18 Nov 2009 18:15:05 -0500
smtp[3418]: > mail.octane.to[76.74.234.28]:25: EHLO inferno.octane.to
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250-hotrod.octane.to Hello inferno.octane.to [76.74.234.11], pleased to meet you
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250-ENHANCEDSTATUSCODES
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250-PIPELINING
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250-8BITMIME
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250-SIZE
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250-DSN
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250-ETRN
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250-DELIVERBY
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250 HELP
smtp[3418]: server features: 0x900f size 0
smtp[3418]: Using ESMTP PIPELINING, TCP send buffer size is 4096
smtp[3418]: > mail.octane.to[76.74.234.28]:25: MAIL FROM:<[email protected]> SIZE=360
smtp[3418]: > mail.octane.to[76.74.234.28]:25: RCPT TO:<[email protected]> ORCPT=rfc822;[email protected]
smtp[3418]: > mail.octane.to[76.74.234.28]:25: DATA
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250 2.1.0 <[email protected]>... Sender ok
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250 2.1.5 <[email protected]>... Recipient ok
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 354 Enter mail, end with "." on a line by itself
smtp[3418]: > mail.octane.to[76.74.234.28]:25: .
smtp[3418]: > mail.octane.to[76.74.234.28]:25: QUIT
smtp[3418]: < mail.octane.to[76.74.234.28]:25: 250 2.0.0 nAINF5wx003171 Message accepted for delivery
smtp[3418]: 3CFEB20160: to=<[email protected]>, relay=mail.octane.to[76.74.234.28]:25, delay=0.79, delays=0.45/0/0.04/0.3, dsn=2.0.0, status=sent (250 2.0.0 nAINF5wx003171 Message accepted for delivery)
smtp[3418]: name_mask: resource
smtp[3418]: name_mask: software
qmgr[3392]: 3CFEB20160: removed
检查两台机器--截屏
我有两台配置几乎相同的机器。设置 Ironhide,它是 Inferno 的克隆版(这台机器给我带来了问题)。这是一个截屏视频,演示了批量部署、日志和一些基本配置。
截屏录像((链接已删除))
答案1
除非所讨论的盒子上的其他症状指向 IO,否则我不确定您为什么要检查硬盘和相关配置。
我的第一个猜测是与 DNS 有关,因为 postfix 作为 MTA 所做的一切都与 DNS 有关。但是,猜测没有什么用 - 也许向我们显示您当前的设置会有所帮助。运行以下命令:
# postconf -n
并为阅读此问题的人粘贴输出 - 显然,根据需要进行清理,互联网就是这样。仅供参考,根据 postconf 手册页,-n 标志打印“参数设置不保留其内置默认值,因为它们在 main.cf 中明确指定“
@womble:“双重选择加入”也是营销术语。
更新
从截屏视频中,我注意到的唯一有趣的事情是日志中的“延迟=”位。根据发布说明:
Postfix logs additional delay information as "delays=a/b/c/d" where a=time before queue manager, including message transmission; b=time in queue manager; c=connection setup time including DNS, HELO and TLS; d=message transmission time.
似乎来自地狱延迟的最大部分在于A,而来自铁皮有他们的d...根据上面的注释,这意味着地狱的信息大部分时间都在前队列管理器(包括消息传输)和 ironhide 的消息花费了大部分时间在消息传输。
不确定这是什么意思,但希望它能对您的搜索有所帮助。:)