私は、メールボックストランスポートとして cyrus を使用するように設定された Postfix 2.1.5 を実行している古い OS X Server 10.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 時間かかり、多くの送信者がこの通知を受け取りました。これは理想的とは言えません。
コマンドの時間制限を増やす方法はありますか?
答え1
この回答はほとんど話題から外れていますが、Cyrus がかなり古い (v2.1.x 以前) 場合、または後で導入された Skiplist の代わりに BerkeleyDB バックエンドを使用している場合は、実際に Cyrus を修正するのに役立つ可能性があります。
古いCyrus IMAPdの問題は、デフォルトではBerkeleyDBがBDBのデフォルト設定を使用していたことです。デフォルトは非常に小さく、256です。キロバイトメモリ内キャッシュなど。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_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
再度実行して値が変更されたかどうかを確認します。