CLEANUP(8)                                                          CLEANUP(8)

名称
       cleanup - 规范化邮件并加入 Postfix 队列

摘要
       cleanup [通用 Postfix 守护进程选项]

描述
       cleanup(8) 守护进程负责处理接收的邮件,将其放入incoming邮件队列,并通知队列管理器有新邮件到达。

       该守护进程执行以下转换操作:

       o      自动补全缺失的邮件头字段:(Resent-)From:To:Message-Id:Date:。
              此功能通过local_header_rewrite_clientsalways_add_missing_headers参数启用。

       o      将信封和头部的地址转换为标准的user@fully-qualified-domain格式,这是其他Postfix程序所要求的格式。
              此转换依赖于trivial-rewrite(8)守护进程。
              头部转换通过local_header_rewrite_clients参数启用。

       o      消除重复的信封收件人地址。
              此功能通过duplicate_filter_limit参数控制。

       o      移除特定邮件头:BccContent-LengthResent-BccReturn-Path。
              通过message_drop_headers参数配置。

       o      可选功能:根据canonical(5)查找表中的映射规则重写所有信封和头部地址。
              头部转换通过local_header_rewrite_clients参数启用。

       o      可选功能:伪装信封发件人地址和邮件头地址(即去除masquerade_domains参数所列域名的子域信息,但masquerade_exceptions参数列出的用户名除外)。
              默认情况下,地址伪装不影响信封收件人。
              头部转换通过local_header_rewrite_clients参数启用。

       o      可选功能:根据virtual_alias_maps查找表中的信息扩展信封收件人地址。

       cleanup(8)会对每封邮件的内容进行完整性检查。发现问题时,默认会向清理服务客户端返回诊断状态,由客户端自行处理问题。
       客户端也可请求cleanup(8)在出现问题时将邮件退回发件人。

遵循标准
       RFC 822 (ARPA互联网文本消息)
       RFC 2045 (MIME:互联网消息体格式)
       RFC 2046 (MIME:媒体类型)
       RFC 2822 (互联网消息格式)
       RFC 3463 (增强状态码)
       RFC 3464 (投递状态通知)
       RFC 5322 (互联网消息格式)
       RFC 8689 (TLS-Required:消息头)

诊断
       问题和事务会记录到syslogd(8)或postlogd(8)已知问题
       基于表的重写规则难以表达if then else等逻辑关系。

配置参数
       修改main.cf配置会自动生效,因为cleanup(8)进程只运行有限时间。
       使用"postfix reload"命令可加速配置更新。

       下文仅提供参数摘要,详见postconf(5)中的完整说明及示例。

兼容性控制
       undisclosed_recipients_header (参见'postconf -d'输出)
              当邮件缺少To:或Cc:头时,Postfix cleanup(8)服务器插入的消息头。

       仅Postfix 2.1版本支持:

       enable_errors_to (no)
              将邮件投递错误报告发送到非标准的Errors-To:头指定地址,而非信封发件人地址。
              (此功能在Postfix 2.2移除,2.1版默认关闭,更早版本则始终启用)。

       仅Postfix 2.6及更高版本支持:

       always_add_missing_headers (no)
              始终补全缺失的(Resent-)From:、To:、Date:或Message-ID:头。

       enable_long_queue_ids (no)
              启用长且不重复的队列ID(队列文件名)。

头部格式控制
       仅Postfix 3.0及更高版本支持:

       message_drop_headers (bcc, content-length, resent-bcc, return-path)
              cleanup(8)守护进程在应用header_checks(5)后、调用Milter应用前会移除的消息头名称。

       仅Postfix 3.3及更高版本支持:

       header_from_format (standard)
              Postfix生成的From:头的格式。

       仅Postfix 3.10及更高版本支持:

       full_name_encoding_charset (utf-8)
              Postfix自动生成符合RFC 2047规范的编码全名时使用的字符集名称。

内置内容过滤控制
       Postfix内置内容过滤主要用于阻止蠕虫或病毒泛滥,并非通用内容过滤器。

       body_checks (empty)body_checks(5)手册页规范的内容检查查找表。

       header_checks (empty)header_checks(5)手册页规范的非MIME消息头内容检查查找表。

       仅Postfix 2.0及更高版本支持:

       body_checks_size_limit (51200)
              消息正文段落(或附件)中接受body_checks检查的文本最大字节数。

       mime_header_checks ($header_checks)header_checks(5)手册页规范的MIME相关消息头检查查找表。

       nested_header_checks ($header_checks)header_checks(5)手册页规范的附件中非MIME消息头检查查找表。

       仅Postfix 2.3及更高版本支持:

       message_reject_characters (empty)
              Postfix会在消息内容中拒绝的字符集。

       message_strip_characters (empty)
              Postfix会从消息内容中移除的字符集。

       仅Postfix 3.9、3.8.5、3.7.10、3.6.14、3.5.24及更高版本支持:

       cleanup_replace_stray_cr_lf (yes)
              将消息内容中的每个孤立的<CR>或<LF>字符替换为空格,防止外发SMTP注入攻击,
              并确保Postfix添加的DKIM等签名的验证不受远程邮件服务器处理这些字符方式的影响。

队列前Milter控制
       自2.3版起,Postfix支持Sendmail 8的Milter(邮件过滤器)协议。
       当邮件不是通过smtpd(8)服务器接收时,cleanup(8)服务器会尽可能模拟SMTP事件。
       详见MILTER_README文档。

       non_smtpd_milters (empty)
              用于处理非Postfix smtpd(8)服务器接收的新邮件的Milter应用列表。

       milter_protocol (6)
              与Milter应用通信的邮件过滤协议版本及扩展(Postfix 2.6前默认为2)。

       milter_default_action (tempfail)
              Milter响应不可用(如配置错误或Milter故障)时的默认操作。

       milter_macro_daemon_name ($myhostname)
              发送给Milter应用的{daemon_name}宏值。

       milter_macro_v ($mail_name $mail_version)
              发送给Milter应用的{v}宏值。

       milter_connect_timeout (30s)
              连接Milter应用及协商协议选项的最长时间。

       milter_command_timeout (30s)
              向Milter应用发送SMTP命令及接收响应的最长时间。

       milter_content_timeout (300s)
              向Milter应用发送消息内容及接收响应的最长时间。

       milter_connect_macros (参见'postconf -d'输出)
              SMTP连接完成后发送给Milter应用的宏。

       milter_helo_macros (参见'postconf -d'输出)
              SMTP HELO/EHLO命令后发送给Milter应用的宏。

       milter_mail_macros (参见'postconf -d'输出)
              SMTP MAIL FROM命令后发送给Milter应用的宏。

       milter_rcpt_macros (参见'postconf -d'输出)
              SMTP RCPT TO命令后发送给Milter应用的宏。

       milter_data_macros (参见'postconf -d'输出)
              SMTP DATA命令后发送给v4+ Milter应用的宏。

       milter_unknown_command_macros (参见'postconf -d'输出)
              未知SMTP命令后发送给v3+ Milter应用的宏。

       milter_end_of_data_macros (参见'postconf -d'输出)
              消息数据结束后发送给Milter应用的宏。

       仅Postfix 2.5及更高版本支持:

       milter_end_of_header_macros (参见'postconf -d'输出)
              消息头结束后发送给Milter应用的宏。

       仅Postfix 2.7及更高版本支持:

       milter_header_checks (empty)
              用于检查Milter应用生成的消息头内容的查找表。

       仅Postfix 3.1及更高版本支持:

       milter_macro_defaults (empty)
              可指定发送给Milter应用的任意宏默认值的name=value对列表。

MIME处理控制
       仅Postfix 2.0及更高版本支持:

       disable_mime_input_processing (no)
              接收邮件时禁用MIME处理。

       mime_boundary_length_limit (2048)
              MIME多部分边界字符串的最大长度。

       mime_nesting_limit (100)
              MIME处理器支持的最大递归层级。

       strict_8bitmime (no)
              同时启用strict_7bit_headersstrict_8bitmime_bodystrict_7bit_headers (no)
              拒绝消息头中包含8位文本的邮件。

       strict_8bitmime_body (no)
              拒绝未声明8位MIME内容编码的8位消息正文。

       strict_mime_encoding_domain (no)
              对message/*或multipart/* MIME类型,拒绝包含无效Content-Transfer-Encoding信息的邮件。

       仅Postfix 2.5及更高版本支持:

       detect_8bit_encoding_header (yes)
              通过检查Content-Transfer-Encoding头自动检测8BITMIME正文内容(历史版本中此功能始终启用)。

自动BCC收件人控制
       Postfix可在邮件进入系统时自动添加密送(BCC):

       always_bcc (empty)
              指定接收Postfix系统每封邮件密送副本的地址。

       仅Postfix 2.1及更高版本支持:

       sender_bcc_maps (empty)
              按信封发件人地址索引的密送地址查找表。

       recipient_bcc_maps (empty)
              按信封收件人地址索引的密送地址查找表。

地址转换控制
       地址重写由trivial-rewrite(8)守护进程处理。cleanup(8)服务器实现基于表的地址映射。

       empty_address_recipient (MAILER-DAEMON)
              空地址邮件的接收者。

       canonical_maps (empty)
              用于消息头和信封地址映射的查找表。

       recipient_canonical_maps (empty)
              用于信封和头部收件人地址映射的查找表。

       sender_canonical_maps (empty)
              用于信封和头部发件人地址映射的查找表。

       masquerade_classes (envelope_sender, header_sender, header_recipient)
              受地址伪装功能影响的地址类型。

       masquerade_domains (empty)
              指定将剥离子域结构的域名列表。

       masquerade_exceptions (empty)
              不受地址伪装影响的用户名列表,即使其地址匹配$masquerade_domainspropagate_unmatched_extensions (canonical, virtual)
              指定哪些地址查找表会将地址扩展从查找键复制到查找结果。

       Postfix 2.0之前版本支持:

       virtual_maps (empty)
              包含以下内容的查找表:
              a) 所有地址都被别名到其他本地或远程域的域名
              b) 被别名到其他本地或远程域地址的地址

       仅Postfix 2.0及更高版本支持:

       virtual_alias_maps ($virtual_maps)
              通常使用完整电子邮件地址(含域名)搜索的查找表,适用于所有收件人类型:
              local(8)、虚拟和远程;不同于alias_maps仅使用本地部分(无域名)搜索且仅适用于local(8)收件人。

       仅Postfix 2.2及更高版本支持:

       canonical_classes (envelope_sender, envelope_recipient, header_sender, header_recipient)canonical_maps地址映射影响的地址类型。

       recipient_canonical_classes (envelope_recipient, header_recipient)recipient_canonical_maps地址映射影响的地址类型。

       sender_canonical_classes (envelope_sender, header_sender)sender_canonical_maps地址映射影响的地址类型。

       remote_header_rewrite_domain (empty)remote_header_rewrite_domain非空时,重写或添加来自远程客户端的邮件头,
              用指定域更新不完整地址并补全缺失头部。

资源与速率控制
       duplicate_filter_limit (1000)
              地址去重过滤器为aliases(5)virtual(5)别名扩展及showq(8)队列显示保留的最大地址数。

       header_size_limit (102400)
              存储消息头的最大内存量(字节)。

       hopcount_limit (50)
              主消息头中允许的Received:头最大数量。

       in_flow_delay (1s)
              当邮件到达速率超过投递速率时,接受新邮件前的暂停时间。

       message_size_limit (10240000)
              包含信封信息的邮件最大尺寸(字节)。

       仅Postfix 2.0及更高版本支持:

       header_address_token_limit (10240)
              地址头中允许的地址令牌最大数量。

       mime_boundary_length_limit (2048)
              MIME多部分边界字符串的最大长度。

       mime_nesting_limit (100)
              MIME处理器支持的最大递归层级。

       queue_file_attribute_count_limit (100)
              Postfix队列文件中可存储的(name=value)属性最大数量。

       仅Postfix 2.1及更高版本支持:

       virtual_alias_expansion_limit (1000)
              虚拟别名扩展从每个原始收件人生成的最大地址数。

       virtual_alias_recursion_limit (1000)
              虚拟别名扩展的最大嵌套深度。

       仅Postfix 3.0及更高版本支持:

       virtual_alias_address_length_limit (1000)
              虚拟别名扩展后电子邮件地址的最大长度。

SMTPUTF8控制
       Postfix 3.0引入初步SMTPUTF8支持。

       smtputf8_enable (yes)
              启用对RFC 6531RFC 6532RFC 6533描述的协议的初步SMTPUTF8支持。

       smtputf8_autodetect_classes (sendmail, verify)
              检测指定邮件来源类别的消息是否需要SMTPUTF8支持。

       仅Postfix 3.2及更高版本支持:

       enable_idna2003_compatibility (no)
              在UTF-8域名与DNS查询使用的ASCII格式间转换时,启用IDNA2003与IDNA2008的"过渡"兼容性。

TLS支持
       仅Postfix 3.10及更高版本支持:

       tls_required_enable (yes)
              启用对RFC 8689定义的"TLS-Required: no"消息头的支持。

其他控制项
       config_directory (参见'postconf -d'输出)
              Postfix主配置文件main.cfmaster.cf的默认位置。

       daemon_timeout (18000s)
              Postfix守护进程处理请求的最长时间,超时将被内置看门狗终止。

       delay_logging_resolution_limit (2)
              记录延迟值时小数点后的最大位数。

       delay_warning_time (0h)
              邮件滞留队列时,发送邮件头副本给发件人的延迟时间。

       ipc_timeout (3600s)
              通过内部通信通道收发信息的超时时间。

       max_idle (100s)
              Postfix守护进程等待传入连接的最大空闲时间。

       max_use (100)
              Postfix守护进程自愿终止前处理的最大连接数。

       myhostname (参见'postconf -d'输出)
              本邮件系统的Internet主机名。

       myorigin ($myhostname)
              本地发出邮件显示的来源域名,也是本地邮件的投递目标。

       process_id (read-only)
              Postfix命令或守护进程的进程ID。

       process_name (read-only)
              Postfix命令或守护进程的进程名称。

       queue_directory (参见'postconf -d'输出)
              Postfix顶级队列目录的位置。

       soft_bounce (no)
              安全机制,保留本应退回发件人的邮件。

       syslog_facility (mail)
              Postfix日志记录的syslog设施。

       syslog_name (参见'postconf -d'输出)
              在syslog记录中预置到进程名的前缀,如"smtpd"变为"prefix/smtpd"。

       仅Postfix 2.1及更高版本支持:

       enable_original_recipient (yes)
              在地址被重写为不同地址(如通过别名或规范映射)后,支持原始收件人地址。

       仅Postfix 3.3及更高版本支持:

       service_name (read-only)
              Postfix守护进程在master.cf中的服务名。

       仅Postfix 3.5及更高版本支持:

       info_log_address_format (external)
              非调试日志(信息、警告等)中使用的电子邮件地址格式。

       仅Postfix 3.9及更高版本支持:

       force_mime_input_conversion (no)
              在应用header_checksbody_checks、Milters及队列后内容过滤器前,
              将声称是8位的内容转换为quoted-printable格式。

文件
       /etc/postfix/canonical*,规范映射表
       /etc/postfix/virtual*,虚拟映射表

参见
       trivial-rewrite(8),地址重写
       qmgr(8),队列管理器
       header_checks(5),消息头内容检查
       body_checks(5),正文内容检查
       canonical(5),规范地址查找表格式
       virtual(5),虚拟别名查找表格式
       postconf(5),配置参数
       master(5),通用守护进程选项
       master(8),进程管理器
       postlogd(8),Postfix日志记录
       syslogd(8),系统日志记录

README文件
       ADDRESS_REWRITING_README Postfix地址操作
       CONTENT_INSPECTION_README 内容检查

许可证
       本软件必须随附Secure Mailer许可证。

作者
       Wietse Venema
       IBM T.J. Watson Research
       P.O. Box 704
       Yorktown Heights, NY 10598, USA

       Wietse Venema
       Google, Inc.
       111 8th Avenue
       New York, NY 10011, USA

       Wietse Venema
       porcupine.org

                                                                    CLEANUP(8)