メールボックストランスポートとしてcyrusを使用するように構成されたPostfix2.1.5を実行している古いOSX Server10.4.xがあります。
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
時々、キックスタート(サーバー全体をすぐに交換する)が必要ですが、問題が発生すると、配信不能な通知が次のように送信されます。
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 - n n - 10 pipe
user=cyrusimap argv=/usr/bin/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
通常、問題を検出して解決するサービスを再起動しますが、今日は1〜2時間で検出され、多くの送信者がこの通知を受け取りました。これは理想的とは言えません。
コマンドの制限時間を増やす方法はありますか?
この回答はほとんどトピックから外れていますが、Cyrusが十分に古い(v2.1.x以前)場合、または後で導入されたSkiplistの代わりにBerkeleyDBバックエンドを使用している場合は、実際にCyrusを修正するのに役立つ可能性があります。
古いCyrusIMAPdの問題は、デフォルトでそのBerkeleyDBがBDBのデフォルト設定を使用していたことでした。デフォルトはめちゃくちゃ小さいです。 256 kilobytesインメモリキャッシュなど。 Cyrusに配信するメールがたくさんある場合、これはすぐにBerkeleyDBのデッドロックにつながります。
現在のCyrusBerkeleyDBステータスを確認するには:
cd /path/to/your/cyrus/datadir (the dir with mailboxes.db and so on)
db_stat -m *.db
(db_stat
コマンドはdb_XYstat
の形式である可能性があります。XYはBerkeleyDBバージョンを表します)
それがキャッシュサイズの非常に低い値を示している場合は、続けて自由に増やしてください。
まず、念のため、Cyrusを停止し、そのデータディレクトリのバックアップコピーを作成します。
次に、データディレクトリに「DB_CONFIG」というファイルを作成し、少なくともこの行が含まれるようにします
set_cachesize 0 16777216 0
これにより、メモリ内のキャッシュサイズが16メガバイトに増加します。これは、非常に大規模なインストールにも十分です。
DB_CONFIGファイルがCyrusと同じユーザーアカウントによって所有されていることを確認してください。
キャッシュの変更を実際にアクティブにするには、恐ろしい名前のコマンドdb_recover
を実行します(dbXY_recover
の形式の場合もあります。rootなどではなく、Cyrusユーザーとしてコマンドを実行してください。
Cyrusを再起動し、機能するかどうかを確認し、db_stat -m *.db
を再度実行して、値が変更されたかどうかを確認します。