Postfixのパラメータ

Postfix 2.9 がリリースされたころに「Postfixのパラメータ」という記事を書きましたが、それ以降の変更について書いてみます。

新しいパラメータ、全然しらない…。

Postfix 2.9.11

パラメータ数 701

Postfix 2.10.5

パラメータ数 709

追加

postscreen_upstream_proxy_protocol
postscreen_upstream_proxy_timeout
process_id
process_name
smtpd_log_access_permit_actions
smtpd_relay_restrictions
smtpd_upstream_proxy_protocol
smtpd_upstream_proxy_timeout

変更

proxy_read_maps               デフォルト値に $smtpd_sender_login_maps 追加
smtpd_recipient_restrictions  デフォルト値が空に変更

Postfix 2.11.3

パラメータ数 725

追加

lmdb_map_size
lmtp_connection_reuse_count_limit
lmtp_dns_support_level
lmtp_tls_force_insecure_host_tlsa_lookup
lmtp_tls_trust_anchor_file
postscreen_dnsbl_whitelist_threshold
smtp_connection_reuse_count_limit
smtp_dns_support_level
smtp_tls_force_insecure_host_tlsa_lookup
smtp_tls_trust_anchor_file
smtpd_sasl_service
tls_dane_digest_agility
tls_dane_digests
tls_dane_trust_anchor_digest_enable
tls_ssl_options
tls_wildcard_matches_multiple_labels
tlsmgr_service_name

削除

tlsproxy_tls_session_cache_timeout

変更

lmtp_tls_session_cache_timeout     最大値が無制限から 8640000 に変更
recipient_delimiter                最大長が1から無制限に変更
smtp_tls_session_cache_timeout     最大値が無制限から 8640000 に変更
smtpd_tls_session_cache_timeout    最大値が無制限から 8640000 に変更

Postfix 辞典 (DESKTOP REFERENCE)

Postfix 辞典 (DESKTOP REFERENCE)

Postfix のデーモン

Postfix の master から起動されるデーモンの動きについて調べてみました。

Postfix は smtpd, qmgr, cleanup 等の複数のデーモンが連携して動作しています。 すべてのデーモンは master から起動されますが、master は各デーモンの起動と監視をしているだけで、master 自身はメールの配送には絡んでません。デーモン起動後は各デーモン同士が連携してメール配送を行います。

実際、メール配送に関係ないデーモンを master から起動しても何の問題もありません。

master は master.cf の記述に従って、TCP ソケットまたは UNIX ドメインソケットでクライアントからの接続を待ち受けます。クライアントから接続の要求があると、デーモンを起動し、接続以降の処理は基本的に起動したデーモンに任せます。

しかし master から起動されるデーモンは、起動されたあと好きに動けばいいというわけではなく、作法にしたがって master と会話をする必要があります。

デーモンは次のファイル記述子の状態で起動されます。

ファイル記述子 内容
0 /dev/null
1 /dev/null
2 /dev/null
3 MASTER_FLOW_READ : メール流量制御用(?)
4 MASTER_FLOW_WRITE : メール流量制御用(?)
5 MASTER_STATUS_FD : デーモンの状態通知用
6以降 MASTER_LISTEN_FD : 待ち受け用ソケット

MASTER_LISTEN_FD は待ち受け用のソケットです。 複数のIPアドレス(IPv4/IPv6/lo/eth0等)で待ち受ける場合は、6番以降その数だけのファイル記述子が待ち受け用ソケットとなっています。 ソケットがいくつあるかは、master がデーモンを起動する際に -s オプションで指定します。

起動されたデーモンは、このソケットに対して accept() し、クライアントとの接続を得ます。 その後、master に対して処理の開始を通知し、処理を実行します。 処理が終了したら master に処理の終了を通知します。

処理の開始/終了の通知は MASTER_STATUS_FD に対して次のデータを送信することで行います。

意味
int プロセスID
unsigned int GENERATION 環境変数の値(8進数)を数値化したもの
int 開始時は 0, 終了時は 1

処理が終わった後はプロセスを終了してもいいですし、accept() に戻ってもいいです。

以上を踏まえて、デーモンプログラムを作ってみます。C だと面倒なので Ruby で書きます。

#!/usr/local/bin/ruby
require 'optparse'
require 'socket'

MASTER_STATUS_FD = 5
MASTER_LISTEN_FD = 6

opt = ARGV.getopts('cdDi:lm:n:o:s:St:uvVz')  # -s 以外にもオプションがある
nsocks = opt['s'] ? opt['s'].to_i : 1        # ソケットの数
socks = []
fd = MASTER_LISTEN_FD
nsocks.times do
  socks.push TCPServer.for_fd(fd)
  fd += 1
end
stat_fd = IO.for_fd(MASTER_STATUS_FD)
generation = ENV['GENERATION'].to_i(8)

# 100回処理したら終了
100.times do
  rs, = select(socks, nil, nil, 100)
  break unless rs                            # 100秒接続がなかったら終了
  conn = rs[0].accept
  stat_fd.syswrite [$$, generation, 0].pack('iIi')
  conn.puts $$
  conn.close
  stat_fd.syswrite [$$, generation, 1].pack('iIi')
end

このプログラムを $daemon_directory (Ubuntu では /usr/lib/postfix) に hoge という名前で置いておき、master.cf に次のように書いておきます。

12345  inet    n   n   n   -   -   hoge

postfix reload 後、12345 ポートに繋ぐと、hoge プロセスのプロセスIDが返されます。

なお、master を inetd のように使いたい場合は、こんなデーモンプログラムを作るよりも spawn デーモンを使うのが簡単です。

Postfixのパラメータ

Postfix をちゃんと調べたのは「Postfix辞典」を執筆した頃なので、2.2 が主流で 2.3 が出たばっかりの頃でした。もう6年くらい前のことです。

Postfix 辞典 (DESKTOP REFERENCE)

Postfix 辞典 (DESKTOP REFERENCE)

最近はあまりちゃんと調べずに使うだけになってたのですが、Postfix 2.9.0 が出たのをきっかけに久しぶりにパラメータの追加/削除/変更について調べてみました。

2.2 では 411個だったパラメータが 2.9 ではなんと 700個に!
増えているとは思ってましたが、こんなに増えていたとは…。

最新バージョンで「Postfix辞典」のような内容のドキュメントをまた書いてみたいです。書籍はむずかしいだろう(多分売れないので)から、ブログで細々とでも。

Postfix 2.0.20

パラメータ数 276

Postfix 2.1.6

パラメータ数 333

追加パラメータ
address_verify_default_transport
address_verify_local_transport
address_verify_map
address_verify_negative_cache
address_verify_negative_expire_time
address_verify_negative_refresh_time
address_verify_poll_count
address_verify_poll_delay
address_verify_positive_expire_time
address_verify_positive_refresh_time
address_verify_relay_transport
address_verify_relayhost
address_verify_sender
address_verify_service_name
address_verify_transport_maps
address_verify_virtual_transport
application_event_drain_time
backwards_bounce_logfile_compatibility
bounce_queue_lifetime
enable_errors_to
enable_original_recipient
html_directory
ipc_ttl
lmtp_send_xforward_command
lmtp_xforward_timeout
multi_recipient_bounce_reject_code
receive_override_options
recipient_bcc_maps
resolve_null_domain
sender_based_routing
sender_bcc_maps
smtp_defer_if_no_mx_address_found
smtp_host_lookup
smtp_mx_address_limit
smtp_mx_session_limit
smtp_quote_rfc821_envelope
smtp_rset_timeout
smtp_send_xforward_command
smtp_xforward_timeout
smtpd_authorized_xclient_hosts
smtpd_authorized_xforward_hosts
smtpd_client_connection_count_limit
smtpd_client_connection_limit_exceptions
smtpd_client_connection_rate_limit
smtpd_policy_service_max_idle
smtpd_policy_service_max_ttl
smtpd_policy_service_timeout
smtpd_proxy_ehlo
smtpd_proxy_filter
smtpd_proxy_timeout
smtpd_recipient_overshoot_limit
smtpd_reject_unlisted_recipient
smtpd_reject_unlisted_sender
smtpd_sasl_application_name
smtpd_sasl_exceptions_networks
trace_service_name
unverified_recipient_reject_code
unverified_sender_reject_code
virtual_alias_expansion_limit
virtual_alias_recursion_limit
デフォルト値変更
hash_queue_names   "incoming,active,deferred,bounce,defer,flush,hold" → "incoming, active, deferred, bounce, defer, flush, hold, trace"
lmtp_rset_timeout  300s → 120s
mydestination      "$myhostname, localhost.$mydomain" → "$myhostname, localhost.$mydomain, localhost"
パラメータ名変更
authorized_verp_clients → smtpd_authorized_verp_clients
削除パラメータ
extract_recipient_limit
program_directory
smtp_skip_4xx_greeting

Postfix 2.2.12

パラメータ数 411

追加パラメータ
anvil_rate_time_unit
anvil_status_update_time
authorized_flush_users
authorized_mailq_users
authorized_submit_users
canonical_classes
command_execution_directory
connection_cache_service
connection_cache_status_update_time
connection_cache_ttl_limit
execution_directory_expansion_filter
inet_protocols
local_header_rewrite_clients
recipient_canonical_classes
relay_clientcerts
remote_header_rewrite_domain
sender_canonical_classes
smtp_bind_address6
smtp_cname_overrides_servername
smtp_connection_cache_destinations
smtp_connection_cache_on_demand
smtp_connection_cache_reuse_limit
smtp_connection_cache_time_limit
smtp_discard_ehlo_keyword_address_maps
smtp_discard_ehlo_keywords
smtp_enforce_tls
smtp_generic_maps
smtp_sasl_mechanism_filter
smtp_sasl_tls_security_options
smtp_starttls_timeout
smtp_tls_CAfile
smtp_tls_CApath
smtp_tls_cert_file
smtp_tls_cipherlist
smtp_tls_dcert_file
smtp_tls_dkey_file
smtp_tls_enforce_peername
smtp_tls_key_file
smtp_tls_loglevel
smtp_tls_note_starttls_offer
smtp_tls_per_site
smtp_tls_scert_verifydepth
smtp_tls_session_cache_database
smtp_tls_session_cache_timeout
smtp_use_tls
smtpd_client_message_rate_limit
smtpd_client_recipient_rate_limit
smtpd_discard_ehlo_keyword_address_maps
smtpd_discard_ehlo_keywords
smtpd_end_of_data_restrictions
smtpd_enforce_tls
smtpd_forbidden_commands
smtpd_sasl_tls_security_options
smtpd_starttls_timeout
smtpd_tls_CAfile
smtpd_tls_CApath
smtpd_tls_ask_ccert
smtpd_tls_auth_only
smtpd_tls_ccert_verifydepth
smtpd_tls_cert_file
smtpd_tls_cipherlist
smtpd_tls_dcert_file
smtpd_tls_dh1024_param_file
smtpd_tls_dh512_param_file
smtpd_tls_dkey_file
smtpd_tls_key_file
smtpd_tls_loglevel
smtpd_tls_received_header
smtpd_tls_req_ccert
smtpd_tls_session_cache_database
smtpd_tls_session_cache_timeout
smtpd_tls_wrappermode
smtpd_use_tls
tls_daemon_random_bytes
tls_random_bytes
tls_random_exchange_name
tls_random_prng_update_period
tls_random_reseed_period
tls_random_source
デフォルト値変更
hash_queue_names    "incoming, active, deferred, bounce, defer, flush, hold, trace" → "deferred, defer"
lmtp_rset_timeout   120s → 20s
smtp_rset_timeout   120s → 20s
パラメータ名変更
smtpd_client_connection_limit_exceptions → smtpd_client_event_limit_exceptions
削除パラメータ
enable_errors_to

Postfix 2.3.19

パラメータ数 514

追加パラメータ
address_verify_sender_dependent_relayhost_maps
bounce_template_file
connection_cache_protocol_timeout
delay_logging_resolution_limit
fallback_transport_maps
frozen_delivered_to
internal_mail_filter_classes
lmtp_bind_address
lmtp_bind_address6
lmtp_cname_overrides_servername
lmtp_connection_cache_destinations
lmtp_connection_cache_on_demand
lmtp_connection_cache_time_limit
lmtp_connection_reuse_time_limit
lmtp_defer_if_no_mx_address_found
lmtp_discard_lhlo_keyword_address_maps
lmtp_discard_lhlo_keywords
lmtp_enforce_tls
lmtp_generic_maps
lmtp_host_lookup
lmtp_lhlo_name
lmtp_line_length_limit
lmtp_mx_address_limit
lmtp_mx_session_limit
lmtp_pix_workaround_delay_time
lmtp_pix_workaround_threshold_time
lmtp_quote_rfc821_envelope
lmtp_randomize_addresses
lmtp_sasl_mechanism_filter
lmtp_sasl_path
lmtp_sasl_tls_security_options
lmtp_sasl_tls_verified_security_options
lmtp_sasl_type
lmtp_sender_dependent_authentication
lmtp_skip_5xx_greeting
lmtp_starttls_timeout
lmtp_tls_CAfile
lmtp_tls_CApath
lmtp_tls_cert_file
lmtp_tls_dcert_file
lmtp_tls_dkey_file
lmtp_tls_enforce_peername
lmtp_tls_exclude_ciphers
lmtp_tls_key_file
lmtp_tls_loglevel
lmtp_tls_mandatory_ciphers
lmtp_tls_mandatory_exclude_ciphers
lmtp_tls_mandatory_protocols
lmtp_tls_note_starttls_offer
lmtp_tls_per_site
lmtp_tls_policy_maps
lmtp_tls_scert_verifydepth
lmtp_tls_secure_cert_match
lmtp_tls_security_level
lmtp_tls_session_cache_database
lmtp_tls_session_cache_timeout
lmtp_tls_verify_cert_match
lmtp_use_tls
mailbox_transport_maps
message_reject_characters
message_strip_characters
milter_command_timeout
milter_connect_macros
milter_connect_timeout
milter_content_timeout
milter_data_macros
milter_default_action
milter_end_of_data_macros
milter_helo_macros
milter_macro_daemon_name
milter_macro_v
milter_mail_macros
milter_protocol
milter_rcpt_macros
milter_unknown_command_macros
non_smtpd_milters
plaintext_reject_code
resolve_numeric_domain
sender_dependent_relayhost_maps
smtp_fallback_relay
smtp_sasl_path
smtp_sasl_tls_verified_security_options
smtp_sasl_type
smtp_sender_dependent_authentication
smtp_tls_exclude_ciphers
smtp_tls_mandatory_ciphers
smtp_tls_mandatory_exclude_ciphers
smtp_tls_mandatory_protocols
smtp_tls_policy_maps
smtp_tls_secure_cert_match
smtp_tls_security_level
smtp_tls_verify_cert_match
smtpd_client_new_tls_session_rate_limit
smtpd_delay_open_until_valid_rcpt
smtpd_milters
smtpd_peername_lookup
smtpd_sasl_authenticated_header
smtpd_sasl_type
smtpd_tls_always_issue_session_ids
smtpd_tls_exclude_ciphers
smtpd_tls_mandatory_ciphers
smtpd_tls_mandatory_exclude_ciphers
smtpd_tls_mandatory_protocols
smtpd_tls_security_level
tls_export_cipherlist
tls_high_cipherlist
tls_low_cipherlist
tls_medium_cipherlist
tls_null_cipherlist
デフォルト値変更
export_environment                 "TZ MAIL_CONFIG" → "TZ MAIL_CONFIG LANG"
import_environment                 "LANG=C" 追加
proxy_read_maps                    "$sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps" 追加
smtp_cname_overrides_servername    yes → no
smtp_mx_address_limit              0 → 5
smtp_sasl_tls_security_options     "noplaintext, noanonymous" → "$smtp_sasl_security_options"
パラメータ名変更
connection_cache_service          → connection_cache_service_name
smtp_connection_cache_reuse_limit → smtp_connection_reuse_time_limit
smtpd_sasl_application_name       → smtpd_sasl_path
削除パラメータ
fallback_relay
lmtp_cache_connection
lmtp_skip_quit_response
sender_based_routing
smtp_tls_cipherlist
smtpd_tls_cipherlist

Postfix2.4.16

パラメータ数 522

追加パラメータ
default_recipient_refill_delay
default_recipient_refill_limit
lmtp_pix_workaround_maps
lmtp_pix_workarounds
send_cyrus_sasl_authzid
smtp_pix_workaround_maps
smtp_pix_workarounds
tls_append_default_CA
デフォルト値変更
daemon_directory          /usr/libexec/postfix → 環境によっては /usr/lib/postfix
default_recipient_limit   10000 → 20000
ipc_idle                  100s → 5s
mailbox_delivery_lock     "flock" → "flock, dotlock" / "fcntl" → "fcntl, dotlock"
manpage_directory         /usr/local/man → 環境によっては /usr/share/man
minimal_backoff_time      1000s → 300s
queue_run_delay           1000s → 300s
readme_directory          no → 環境によっては /usr/share/doc/postfix
sample_directory          /etc/postfix → 環境によっては /usr/share/doc/postfix/examples
tls_null_cipherlist       !aNULL:eNULL+kRSA → eNULL:!aNULL
virtual_mailbox_lock      "fcntl" → "fcntl, dotlock"
制約変更
undisclosed_recipients_header   0文字以上 → 1文字以上

Postfix 2.5.16

パラメータ数 556

追加パラメータ
cyrus_sasl_config_path
data_directory
default_destination_concurrency_failed_cohort_limit
default_destination_concurrency_negative_feedback
default_destination_concurrency_positive_feedback
default_destination_rate_delay
destination_concurrency_feedback_debug
detect_8bit_encoding_header
empty_address_relayhost_maps_lookup_key
lmtp_body_checks
lmtp_header_checks
lmtp_mime_header_checks
lmtp_nested_header_checks
lmtp_sasl_auth_cache_name
lmtp_sasl_auth_cache_time
lmtp_sasl_auth_soft_bounce
lmtp_tls_fingerprint_cert_match
lmtp_tls_fingerprint_digest
milter_end_of_header_macros
proxy_write_maps
qmqpd_client_port_logging
smtp_body_checks
smtp_header_checks
smtp_mime_header_checks
smtp_nested_header_checks
smtp_sasl_auth_cache_name
smtp_sasl_auth_cache_time
smtp_sasl_auth_soft_bounce
smtp_tls_fingerprint_cert_match
smtp_tls_fingerprint_digest
smtpd_client_port_logging
smtpd_tls_fingerprint_digest
stress
strict_mailbox_ownership
デフォルト値変更
address_verify_sender           postmaster → $double_bounce_sender
lmtp_tls_scert_verifydepth      5 → 9
smtp_tls_scert_verifydepth      5 → 9
smtpd_tls_ccert_verifydepth     5 → 9
tls_random_exchange_name        ${config_directory}/prng_exch → ${data_directory}/prng_exch

Postfix 2.6.13

パラメータ数 596

追加パラメータ
access_map_defer_code
always_add_missing_headers
lmtp_assume_final
lmtp_skip_quit_response
lmtp_tls_ciphers
lmtp_tls_eccert_file
lmtp_tls_eckey_file
lmtp_tls_protocols
master_service_disable
multi_instance_directories
multi_instance_enable
multi_instance_group
multi_instance_name
multi_instance_wrapper
postmulti_control_commands
postmulti_start_commands
postmulti_stop_commands
proxymap_service_name
proxywrite_service_name
reject_tempfail_action
smtp_tls_ciphers
smtp_tls_eccert_file
smtp_tls_eckey_file
smtp_tls_protocols
smtpd_tls_ciphers
smtpd_tls_eccert_file
smtpd_tls_eckey_file
smtpd_tls_eecdh_grade
smtpd_tls_protocols
tcp_windowsize
tls_eecdh_strong_curve
tls_eecdh_ultra_curve
unknown_address_tempfail_action
unknown_helo_hostname_tempfail_action
unverified_recipient_defer_code
unverified_recipient_reject_reason
unverified_recipient_tempfail_action
unverified_sender_defer_code
unverified_sender_reject_reason
unverified_sender_tempfail_action
デフォルト値変更
address_verify_poll_count       3 → ${stress?1}${stress:3}
milter_mail_macros              "i {auth_type} {auth_authen} {auth_author} {mail_addr}" → "i {auth_type} {auth_authen} {auth_author} {mail_addr} {mail_host} {mail_mailer}"
milter_protocol                 2 → 6
milter_rcpt_macros              "i {rcpt_addr}" → "i {rcpt_addr} {rcpt_host} {rcpt_mailer}"
smtpd_hard_error_limit          20 → ${stress?1}${stress:20}
smtpd_junk_command_limit        100 → ${stress?1}${stress:100}
smtpd_timeout                   300s → ${stress?10}${stress:300}s
syslog_name                     postfix → 環境によっては "${multi_instance_name:postfix}${multi_instance_name?$multi_instance_name}"
tls_export_cipherlist           "ALL:+RC4:@STRENGTH" → "PREFER_aNULLALL:+RC4:@STRENGTH"
tls_high_cipherlist             "ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH" → "PREFER_aNULLALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH"
tls_low_cipherlist              "ALL:!EXPORT:+RC4:@STRENGTH" → "PREFER_aNULLALL:!EXPORT:+RC4:@STRENGTH"
tls_medium_cipherlist           "ALL:!EXPORT:!LOW:+RC4:@STRENGTH" → "PREFER_aNULLALL:!EXPORT:!LOW:+RC4:@STRENGTH"
tls_random_source               環境によっては "dev:/dev/arandom"
制約変更
unverified_recipient_reject_code    0以上 → 200以上599以下
unverified_sender_reject_code       0以上 → 200以上599以下

Postfix 2.7.7

パラメータ数 608

追加パラメータ
address_verify_cache_cleanup_interval
address_verify_sender_dependent_default_transport_maps
default_filter_nexthop
empty_address_default_transport_maps_lookup_key
lmtp_reply_filter
lmtp_tls_block_early_mail_reply
milter_header_checks
sender_dependent_default_transport_maps
smtp_reply_filter
smtp_tls_block_early_mail_reply
smtpd_command_filter
smtpd_proxy_options
デフォルト値変更
address_verify_map      "" → "btree:$data_directory/verify_cache"

Postfix 2.8.8

パラメータ数 690

追加パラメータ
dnsblog_reply_delay
dnsblog_service_name
lmtp_address_preference
lmtp_dns_resolver_options
postscreen_access_list
postscreen_bare_newline_action
postscreen_bare_newline_enable
postscreen_bare_newline_ttl
postscreen_blacklist_action
postscreen_cache_cleanup_interval
postscreen_cache_map
postscreen_cache_retention_time
postscreen_client_connection_count_limit
postscreen_command_count_limit
postscreen_command_filter
postscreen_command_time_limit
postscreen_disable_vrfy_command
postscreen_discard_ehlo_keyword_address_maps
postscreen_discard_ehlo_keywords
postscreen_dnsbl_action
postscreen_dnsbl_reply_map
postscreen_dnsbl_sites
postscreen_dnsbl_threshold
postscreen_dnsbl_ttl
postscreen_enforce_tls
postscreen_expansion_filter
postscreen_forbidden_commands
postscreen_greet_action
postscreen_greet_banner
postscreen_greet_ttl
postscreen_greet_wait
postscreen_helo_required
postscreen_non_smtp_command_action
postscreen_non_smtp_command_enable
postscreen_non_smtp_command_ttl
postscreen_pipelining_action
postscreen_pipelining_enable
postscreen_pipelining_ttl
postscreen_post_queue_limit
postscreen_pre_queue_limit
postscreen_reject_footer
postscreen_tls_security_level
postscreen_use_tls
postscreen_watchdog_timeout
qmgr_daemon_timeout
qmgr_ipc_timeout
reset_owner_alias
smtp_address_preference
smtp_dns_resolver_options
smtpd_reject_footer
smtpd_service_name
tls_disable_workarounds
tls_preempt_cipherlist
tlsproxy_enforce_tls
tlsproxy_service_name
tlsproxy_tls_CAfile
tlsproxy_tls_CApath
tlsproxy_tls_always_issue_session_ids
tlsproxy_tls_ask_ccert
tlsproxy_tls_ccert_verifydepth
tlsproxy_tls_cert_file
tlsproxy_tls_ciphers
tlsproxy_tls_dcert_file
tlsproxy_tls_dh1024_param_file
tlsproxy_tls_dh512_param_file
tlsproxy_tls_dkey_file
tlsproxy_tls_eccert_file
tlsproxy_tls_eckey_file
tlsproxy_tls_eecdh_grade
tlsproxy_tls_exclude_ciphers
tlsproxy_tls_fingerprint_digest
tlsproxy_tls_key_file
tlsproxy_tls_loglevel
tlsproxy_tls_mandatory_ciphers
tlsproxy_tls_mandatory_exclude_ciphers
tlsproxy_tls_mandatory_protocols
tlsproxy_tls_protocols
tlsproxy_tls_req_ccert
tlsproxy_tls_security_level
tlsproxy_tls_session_cache_timeout
tlsproxy_use_tls
tlsproxy_watchdog_timeout
デフォルト値変更
smtpd_starttls_timeout          300s → ${stress?10}${stress:300}s
smtpd_tls_eecdh_grade           環境によっては none → strong
undisclosed_recipients_header   "To: undisclosed-recipients:;" → ""

Postfix 2.9.0

パラメータ数 700

追加パラメータ
address_verify_sender_ttl
daemon_table_open_error_is_fatal
enable_long_queue_ids
lmtp_per_record_deadline
lmtp_send_dummy_mail_auth
postscreen_whitelist_interfaces
sendmail_fix_line_endings
smtp_per_record_deadline
smtp_send_dummy_mail_auth
smtpd_per_record_deadline
デフォルト値変更
inet_protocols             ipv4 → 環境によって all or ipv4
lmtp_address_preference    環境によって ipv6 or ipv4 → 環境によって any or ipv4
lmtp_line_length_limit     990 → 998
proxy_read_maps            "$alias_maps" 追加
proxy_write_maps           "$address_verify_map $postscreen_cache_map" 追加
smtp_address_preference    環境によって ipv6 or ipv4 → 環境によって any or ipv4
smtp_line_length_limit     990 → 998
制約変更
inet_interfaces                     1文字以上 → 0文字以上
mailbox_size_limit                  最大 2GB → 最大 8EB
message_size_limit                  最大 2GB → 最大 8EB
postscreen_cache_cleanup_interval   1以上 → 0 以上
virtual_mailbox_limit               最大 2GB → 最大 8EB

パラメータ調査

今回パラメータを調査するために作ったスクリプトは https://gist.github.com/7f850b0052c23bbc4c5d に置いておきました。

Postfix 2.9.0 リリース

Postfix 2.9.0 がリリースされたみたいです http://www.postfix.org/announcements/postfix-2.9.0.html

勝手にテキトーに翻訳してみました。

Postfix 安定版 2.9.0 がリリースされました。主な変更点は以下の通りです(順不同):

  • 再使用されない長いキューID(キューファイル名)のサポート。名前が再使用されないことの主な恩恵は、ログファイルの解析が簡単になることです。詳細は postconf(5) の "enable_long_queue_ids" の説明を見てください。
  • Memcache クライアントのサポートと、proxymap サーバー経由での postscreen(8) と verify(8) キャッシュの共有サポート。memcache サポートの詳細は memcache_table(5) と MEMCACHE_README にあります。
  • 緩やかな劣化: データベースが有効でない場合(オープンできない、読み書きエラー)、Postfix デーモンは fatal エラーで即時に終了するのではなく、warning をログに出力し、そのテーブルに依存しないサービスの提供を続けます。データベースファイルがオープンできない時に即時に終了させるには、"daemon_table_open_error_is_fatal = yes" を記述します。
  • postconf(1) コマンドの改訂。main.cf または master.cf の未使用パラメータ name=value 設定(おそらく間違い)について警告します。master.cf エントリの名前に依存する名前のような"動的な"パラメータ名を理解します(最終的には "postconf -n" がすべてのパラメータ設定を表示します)。よりユーザーフレンドリな形式で main.cf と master.cf を表示できます (postconf -nf, postconf -Mf)。
  • 非常にゆっくりと一度に1バイトのデータを書き込みまたは読み込みするような、アプリケーションレベルの DOS 攻撃に対して防衛するため、SMTPクライアントとサーバーでの読み込み/書き込みのデッドラインサポート。

新しい Postfixソースコードhttp://www.postfix.org/ にあるミラーリストで見つけることができます。

キューIDが再使用されなくなったのは良いですね。Memcache クライアント機能も良さそうです。