我有一个运行Postfix 2.1.5的旧OS X Server 10.4.x,它被configuration为使用cyrus作为邮箱传输。
这里是postconf -n:
# postconf -n alias_maps = hash:/etc/aliases,hash:/var/mailman/data/aliases command_directory = /usr/sbin config_directory = /etc/postfix content_filter = smtp-amavis:[127.0.0.1]:10024 daemon_directory = /usr/libexec/postfix debug_peer_level = 2 enable_server_options = yes html_directory = no inet_interfaces = all local_recipient_maps = proxy:unix:passwd.byname $alias_maps luser_relay = mail_owner = postfix mailbox_size_limit = 0 mailbox_transport = cyrus mailq_path = /usr/bin/mailq manpage_directory = /usr/share/man maps_rbl_domains = message_size_limit = 15728640 mydestination = $myhostname,localhost.$mydomain,livingnow.com.au,localhost mydomain = livingnow.com.au mydomain_fallback = localhost myhostname = server.livingnow.com.au mynetworks = 127.0.0.1/32,192.168.16.0/24 mynetworks_style = host newaliases_path = /usr/bin/newaliases owner_request_special = no queue_directory = /private/var/spool/postfix readme_directory = /usr/share/doc/postfix recipient_delimiter = + sample_directory = /usr/share/doc/postfix/examples sendmail_path = /usr/sbin/sendmail setgid_group = postdrop smtpd_client_restrictions = permit_mynetworks reject_rbl_client sbl-xbl.spamhaus.org reject_rbl_client bl.spamcop.net permit smtpd_pw_server_security_options = cram-md5,login,plain smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,permit smtpd_sasl_auth_enable = yes smtpd_tls_key_file = smtpd_use_pw_server = yes unknown_local_recipient_reject_code = 550
现在,它需要一个kickstart(即将更换整个服务器),但是当它有问题时,无法发送的通知将发送出去:
Final-Recipient: rfc822; [email protected] Action: failed Status: 5.0.0 Diagnostic-Code: X-Postfix; Command time limit exceeded: "/usr/bin/cyrus/bin/deliver"
在master.cf中,该命令列为:
# Also specify in main.cf: cyrus_destination_recipient_limit=1 cyrus unix - nn - 10 pipe user=cyrusimap argv=/usr/bin/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
我们通常会检测到问题并重新启动解决问题的服务,但是我们今天花了一两个小时才发现问题,许多发件人收到了这个通知,这并不理想。
有没有办法增加指挥期限?
这个答案几乎是无关紧要的,但是如果它足够古老(v2.1.x或更早版本),或者使用BerkeleyDB后端而不是稍后介绍的Skiplist,可能会帮助您确实地修复赛勒斯。
旧版Cyrus IMAPd的问题是默认情况下,其BerkeleyDB正在使用BDB的默认设置。 默认值非常小, 256 千字节的内存中caching等等。 如果有大量邮件传递给Cyrus,那么很快就会导致BerkeleyDB死锁。
要查看您当前的Cyrus BerkeleyDB状态:
cd /path/to/your/cyrus/datadir (the dir with mailboxes.db and so on) db_stat -m *.db
( db_stat命令很可能是db_XYstatforms,其中XY代表BerkeleyDB版本)
如果显示caching大小的值很低,请继续并随意增加。
首先,停止Cyrus并制作该数据目录的备份副本。
然后,在数据目录中,创build一个名为“DB_CONFIG”的文件,并至less包含这一行
set_cachesize 0 16777216 0
这会将内存中的caching大小增加到16兆,这对于相当大的安装也是足够的。
确保DB_CONFIG文件与Cyrus拥有相同的用户帐户。
要实际激活caching更改,请运行一个命名为db_recover命令(也可能是dbXY_recoverforms)。请确保以Cyrus用户身份运行该命令,而不是以root身份运行该命令。
重新启动Cyrus,看看它是否工作,再次运行db_stat -m *.db以查看值是否改变。