head 1.1; branch 1.1.1; access; symbols netbsd-10-2-RELEASE:1.1.1.5.2.1 netbsd-9-5-RELEASE:1.1.1.3.26.1 netbsd-11-0-RELEASE:1.1.1.7 netbsd-11-0-RC7:1.1.1.7 netbsd-11-0-RC6:1.1.1.7 netbsd-11-0-RC5:1.1.1.7 netbsd-11-0-RC4:1.1.1.7 PFIX-3-11-2:1.1.1.7 netbsd-11-0-RC3:1.1.1.7 netbsd-11-0-RC2:1.1.1.7 netbsd-11-0-RC1:1.1.1.7 perseant-exfatfs-base-20250801:1.1.1.7 netbsd-11:1.1.1.7.0.2 netbsd-11-base:1.1.1.7 PFIX-3-10-1:1.1.1.7 netbsd-10-1-RELEASE:1.1.1.5.2.1 perseant-exfatfs-base-20240630:1.1.1.6 perseant-exfatfs:1.1.1.6.0.2 perseant-exfatfs-base:1.1.1.6 netbsd-8-3-RELEASE:1.1.1.3 netbsd-9-4-RELEASE:1.1.1.3.26.1 netbsd-10-0-RELEASE:1.1.1.5.2.1 netbsd-10-0-RC6:1.1.1.5.2.1 netbsd-10-0-RC5:1.1.1.5.2.1 netbsd-10-0-RC4:1.1.1.5.2.1 netbsd-10-0-RC3:1.1.1.5.2.1 netbsd-10-0-RC2:1.1.1.5.2.1 PFIX-3-8-4:1.1.1.6 netbsd-10-0-RC1:1.1.1.5 netbsd-10:1.1.1.5.0.2 netbsd-10-base:1.1.1.5 PFIX-3-7-3:1.1.1.5 netbsd-9-3-RELEASE:1.1.1.3 cjep_sun2x-base1:1.1.1.4 cjep_sun2x:1.1.1.4.0.4 cjep_sun2x-base:1.1.1.4 cjep_staticlib_x-base1:1.1.1.4 netbsd-9-2-RELEASE:1.1.1.3 cjep_staticlib_x:1.1.1.4.0.2 cjep_staticlib_x-base:1.1.1.4 netbsd-9-1-RELEASE:1.1.1.3 PFIX-3-5-2:1.1.1.4 phil-wifi-20200421:1.1.1.4 phil-wifi-20200411:1.1.1.4 is-mlppp:1.1.1.3.0.28 is-mlppp-base:1.1.1.3 phil-wifi-20200406:1.1.1.4 netbsd-8-2-RELEASE:1.1.1.3 PFIX-3-5-0:1.1.1.4 netbsd-9-0-RELEASE:1.1.1.3 netbsd-9-0-RC2:1.1.1.3 netbsd-9-0-RC1:1.1.1.3 phil-wifi-20191119:1.1.1.3 netbsd-9:1.1.1.3.0.26 netbsd-9-base:1.1.1.3 phil-wifi-20190609:1.1.1.3 netbsd-8-1-RELEASE:1.1.1.3 netbsd-8-1-RC1:1.1.1.3 pgoyette-compat-merge-20190127:1.1.1.3 pgoyette-compat-20190127:1.1.1.3 pgoyette-compat-20190118:1.1.1.3 pgoyette-compat-1226:1.1.1.3 pgoyette-compat-1126:1.1.1.3 pgoyette-compat-1020:1.1.1.3 pgoyette-compat-0930:1.1.1.3 pgoyette-compat-0906:1.1.1.3 netbsd-7-2-RELEASE:1.1.1.3 pgoyette-compat-0728:1.1.1.3 netbsd-8-0-RELEASE:1.1.1.3 phil-wifi:1.1.1.3.0.24 phil-wifi-base:1.1.1.3 pgoyette-compat-0625:1.1.1.3 netbsd-8-0-RC2:1.1.1.3 pgoyette-compat-0521:1.1.1.3 pgoyette-compat-0502:1.1.1.3 pgoyette-compat-0422:1.1.1.3 netbsd-8-0-RC1:1.1.1.3 pgoyette-compat-0415:1.1.1.3 pgoyette-compat-0407:1.1.1.3 pgoyette-compat-0330:1.1.1.3 pgoyette-compat-0322:1.1.1.3 pgoyette-compat-0315:1.1.1.3 netbsd-7-1-2-RELEASE:1.1.1.3 pgoyette-compat:1.1.1.3.0.22 pgoyette-compat-base:1.1.1.3 netbsd-7-1-1-RELEASE:1.1.1.3 matt-nb8-mediatek:1.1.1.3.0.20 matt-nb8-mediatek-base:1.1.1.3 perseant-stdc-iso10646:1.1.1.3.0.18 perseant-stdc-iso10646-base:1.1.1.3 netbsd-8:1.1.1.3.0.16 netbsd-8-base:1.1.1.3 prg-localcount2-base3:1.1.1.3 prg-localcount2-base2:1.1.1.3 prg-localcount2-base1:1.1.1.3 prg-localcount2:1.1.1.3.0.14 prg-localcount2-base:1.1.1.3 pgoyette-localcount-20170426:1.1.1.3 bouyer-socketcan-base1:1.1.1.3 pgoyette-localcount-20170320:1.1.1.3 netbsd-7-1:1.1.1.3.0.12 netbsd-7-1-RELEASE:1.1.1.3 netbsd-7-1-RC2:1.1.1.3 PFIX-3-1-4:1.1.1.3 netbsd-7-nhusb-base-20170116:1.1.1.3 bouyer-socketcan:1.1.1.3.0.10 bouyer-socketcan-base:1.1.1.3 pgoyette-localcount-20170107:1.1.1.3 netbsd-7-1-RC1:1.1.1.3 pgoyette-localcount-20161104:1.1.1.3 netbsd-7-0-2-RELEASE:1.1.1.3 localcount-20160914:1.1.1.3 netbsd-7-nhusb:1.1.1.3.0.8 netbsd-7-nhusb-base:1.1.1.3 pgoyette-localcount-20160806:1.1.1.3 pgoyette-localcount-20160726:1.1.1.3 pgoyette-localcount:1.1.1.3.0.6 pgoyette-localcount-base:1.1.1.3 netbsd-7-0-1-RELEASE:1.1.1.3 netbsd-7-0:1.1.1.3.0.4 netbsd-7-0-RELEASE:1.1.1.3 PFIX-2-11-6:1.1.1.3 netbsd-7-0-RC3:1.1.1.3 netbsd-7-0-RC2:1.1.1.3 netbsd-7-0-RC1:1.1.1.3 PFIX-2-11-4:1.1.1.3 PFIX-2-11-3:1.1.1.3 netbsd-5-2-3-RELEASE:1.1.1.1.2.3 netbsd-5-1-5-RELEASE:1.1.1.1.2.2 netbsd-6-0-6-RELEASE:1.1.1.2 netbsd-6-1-5-RELEASE:1.1.1.2 netbsd-7:1.1.1.3.0.2 netbsd-7-base:1.1.1.3 PFIX-2-11-1:1.1.1.3 yamt-pagecache-base9:1.1.1.2 yamt-pagecache-tag8:1.1.1.2 netbsd-6-1-4-RELEASE:1.1.1.2 netbsd-6-0-5-RELEASE:1.1.1.2 tls-earlyentropy:1.1.1.2.0.22 tls-earlyentropy-base:1.1.1.3 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.2 riastradh-drm2-base3:1.1.1.2 PFIX-2-10-3:1.1.1.2 netbsd-6-1-3-RELEASE:1.1.1.2 netbsd-6-0-4-RELEASE:1.1.1.2 netbsd-5-2-2-RELEASE:1.1.1.1.2.3 netbsd-5-1-4-RELEASE:1.1.1.1.2.2 netbsd-6-1-2-RELEASE:1.1.1.2 netbsd-6-0-3-RELEASE:1.1.1.2 PFIX-2-10-2:1.1.1.2 netbsd-5-2-1-RELEASE:1.1.1.1.2.3 netbsd-5-1-3-RELEASE:1.1.1.1.2.2 PFIX-2-9-7:1.1.1.2 netbsd-6-1-1-RELEASE:1.1.1.2 riastradh-drm2-base2:1.1.1.2 riastradh-drm2-base1:1.1.1.2 riastradh-drm2:1.1.1.2.0.16 riastradh-drm2-base:1.1.1.2 netbsd-6-1:1.1.1.2.0.20 netbsd-6-0-2-RELEASE:1.1.1.2 netbsd-6-1-RELEASE:1.1.1.2 netbsd-6-1-RC4:1.1.1.2 netbsd-6-1-RC3:1.1.1.2 agc-symver:1.1.1.2.0.18 agc-symver-base:1.1.1.2 netbsd-6-1-RC2:1.1.1.2 netbsd-6-1-RC1:1.1.1.2 yamt-pagecache-base8:1.1.1.2 PFIX-2-9-5:1.1.1.2 netbsd-5-2:1.1.1.1.2.3.0.4 PFIX-2-8-13:1.1.1.2 netbsd-6-0-1-RELEASE:1.1.1.2 yamt-pagecache-base7:1.1.1.2 netbsd-5-2-RELEASE:1.1.1.1.2.3 netbsd-5-2-RC1:1.1.1.1.2.3 matt-nb6-plus-nbase:1.1.1.2 yamt-pagecache-base6:1.1.1.2 netbsd-6-0:1.1.1.2.0.14 netbsd-6-0-RELEASE:1.1.1.2 netbsd-6-0-RC2:1.1.1.2 tls-maxphys:1.1.1.2.0.12 tls-maxphys-base:1.1.1.3 matt-nb6-plus:1.1.1.2.0.10 matt-nb6-plus-base:1.1.1.2 netbsd-6-0-RC1:1.1.1.2 PFIX-2-8-12:1.1.1.2 PFIX-2-8-11:1.1.1.2 yamt-pagecache-base5:1.1.1.2 yamt-pagecache-base4:1.1.1.2 PFIX-2-8-8:1.1.1.2 netbsd-6:1.1.1.2.0.8 netbsd-6-base:1.1.1.2 netbsd-5-1-2-RELEASE:1.1.1.1.2.2 netbsd-5-1-1-RELEASE:1.1.1.1.2.2 yamt-pagecache-base3:1.1.1.2 PFIX-2-8-7:1.1.1.2 yamt-pagecache-base2:1.1.1.2 yamt-pagecache:1.1.1.2.0.6 yamt-pagecache-base:1.1.1.2 PFIX-2-8-6:1.1.1.2 PFIX-2-8-5:1.1.1.2 PFIX-2-8-4:1.1.1.2 cherry-xenmp:1.1.1.2.0.4 cherry-xenmp-base:1.1.1.2 PFIX-2-8-3:1.1.1.2 PFIX-2-8-2:1.1.1.2 PFIX-2-8-1:1.1.1.2 bouyer-quota2-nbase:1.1.1.2 bouyer-quota2:1.1.1.2.0.2 bouyer-quota2-base:1.1.1.2 matt-mips64-premerge-20101231:1.1.1.2 matt-nb5-mips64-premerge-20101231:1.1.1.1.4.2 matt-nb5-pq3:1.1.1.1.2.3.0.2 matt-nb5-pq3-base:1.1.1.1.2.3 PFIX-2-7-2:1.1.1.2 netbsd-5-1:1.1.1.1.2.2.0.2 netbsd-5-1-RELEASE:1.1.1.1.2.2 netbsd-5-1-RC4:1.1.1.1.2.2 matt-nb5-mips64-k15:1.1.1.1.4.2 PFIX-2-7-1:1.1.1.2 netbsd-5-1-RC3:1.1.1.1.2.2 netbsd-5-1-RC2:1.1.1.1.2.2 netbsd-5-1-RC1:1.1.1.1.2.2 matt-nb5-mips64:1.1.1.1.0.4 PFIX-2-6-6:1.1.1.1 matt-premerge-20091211:1.1.1.1 netbsd-5:1.1.1.1.0.2 PFIX-2-6-5:1.1.1.1 PFIX-2-6-2:1.1.1.1 VENEMA:1.1.1; locks; strict; comment @# @; 1.1 date 2009.06.23.10.08.23; author tron; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2009.06.23.10.08.23; author tron; state Exp; branches 1.1.1.1.2.1 1.1.1.1.4.1; next 1.1.1.2; 1.1.1.2 date 2010.06.17.18.06.09; author tron; state Exp; branches 1.1.1.2.12.1 1.1.1.2.22.1; next 1.1.1.3; 1.1.1.3 date 2014.07.06.19.27.40; author tron; state Exp; branches 1.1.1.3.24.1 1.1.1.3.26.1; next 1.1.1.4; commitid 5TVMY9WFpCELTlHx; 1.1.1.4 date 2020.03.18.18.59.27; author christos; state Exp; branches; next 1.1.1.5; commitid hRc0KjfEXOv3PU0C; 1.1.1.5 date 2022.10.08.16.09.01; author christos; state Exp; branches 1.1.1.5.2.1; next 1.1.1.6; commitid kRUbAM0nqDWDQVWD; 1.1.1.6 date 2023.12.23.20.24.48; author christos; state Exp; branches 1.1.1.6.2.1; next 1.1.1.7; commitid b1hV92WYdEWo2DRE; 1.1.1.7 date 2025.02.25.19.11.35; author christos; state Exp; branches; next ; commitid cLFKwpXD6DqXOSKF; 1.1.1.1.2.1 date 2009.06.23.10.08.23; author snj; state dead; branches; next 1.1.1.1.2.2; 1.1.1.1.2.2 date 2009.09.15.06.02.12; author snj; state Exp; branches; next 1.1.1.1.2.3; 1.1.1.1.2.3 date 2010.11.21.18.31.23; author riz; state Exp; branches; next ; 1.1.1.1.4.1 date 2009.06.23.10.08.23; author matt; state dead; branches; next 1.1.1.1.4.2; 1.1.1.1.4.2 date 2010.04.21.05.23.29; author matt; state Exp; branches; next ; 1.1.1.2.12.1 date 2014.08.19.23.59.41; author tls; state Exp; branches; next ; commitid jTnpym9Qu0o4R1Nx; 1.1.1.2.22.1 date 2014.08.10.07.12.46; author tls; state Exp; branches; next ; commitid 0tNMy3UM0qm8IMLx; 1.1.1.3.24.1 date 2020.04.08.14.06.49; author martin; state Exp; branches; next ; commitid Qli2aW9E74UFuA3C; 1.1.1.3.26.1 date 2023.12.25.12.54.33; author martin; state Exp; branches; next ; commitid yzNdlh5ioUjfxQRE; 1.1.1.5.2.1 date 2023.12.25.12.43.22; author martin; state Exp; branches; next ; commitid UCTK9IHygwOntQRE; 1.1.1.6.2.1 date 2025.08.02.05.49.50; author perseant; state Exp; branches; next ; commitid 23j6GFaDws3O875G; desc @@ 1.1 log @Initial revision @ text @ Postfix Address Rewriting

Postfix Address Rewriting


Postfix address rewriting purpose

Address rewriting is at the heart of the Postfix mail system. Postfix rewrites addresses for many different purposes. Some are merely cosmetic, and some are necessary to deliver correctly formatted mail to the correct destination. Examples of address rewriting in Postfix are:

Although Postfix currently has no address rewriting language, it can do surprisingly powerful address manipulation via table lookup. Postfix typically uses lookup tables with fixed strings to map one address to one or multiple addresses, and typically uses regular expressions to map multiple addresses to one or multiple addresses. Fixed-string lookup tables may be in the form of local files, or in the form of NIS, LDAP or SQL databases. The DATABASE_README document gives an introduction to Postfix lookup tables.

Topics covered in this document:

To rewrite message headers or not, or to label as invalid

Postfix versions 2.1 and earlier always rewrite message header addresses, and append Postfix's own domain information to addresses that Postfix considers incomplete. While rewriting message header addresses is OK for mail with a local origin, it is undesirable for remote mail:

Postfix versions 2.2 give you the option to either not rewrite message headers from remote SMTP clients at all, or to label incomplete addresses in such message headers as invalid. Here is how it works:

Postfix address rewriting overview

The figure below zooms in on those parts of Postfix that are most involved with address rewriting activity. See the OVERVIEW document for an overview of the complete Postfix architecture. Names followed by a number are Postfix daemon programs, while unnumbered names represent Postfix queues or internal sources of mail messages.

trivial-
rewrite(8)

(std form)
trivial-
rewrite(8)

(resolve)
^
|
|
v
^
|
|
v
smtpd(8) >- cleanup(8) -> incoming -> active -> qmgr(8) -< smtp(8)
qmqpd(8) lmtp(8)
pickup(8) local(8)
^
|
^
|
|
v
bounces
forwarding
notices
deferred

The table below summarizes all Postfix address manipulations. If you're reading this document for the first time, skip forward to "Address rewriting when mail is received". Once you've finished reading the remainder of this document, the table will help you to quickly find what you need.

Address manipulation Scope Daemon Global turn-on control Selective turn-off control
Rewrite addresses to standard form all mail trivial-
rewrite(8)
append_at_myorigin, append_dot_mydomain, swap_bangpath, allow_percent_hack local_header_rewrite_clients, remote_header_rewrite_domain
Canonical address mapping all mail cleanup(8) canonical_maps receive_override_options, local_header_rewrite_clients, remote_header_rewrite_domain
Address masquerading all mail cleanup(8) masquerade_domains receive_override_options, local_header_rewrite_clients, remote_header_rewrite_domain
Automatic BCC recipients new mail cleanup(8) always_bcc, sender_bcc_maps, recipient_bcc_maps receive_override_options
Virtual aliasing all mail cleanup(8) virtual_alias_maps receive_override_options
Resolve address to destination all mail trivial-
rewrite(8)
none none
Mail transport switch all mail trivial-
rewrite(8)
transport_maps none
Relocated users table all mail trivial-
rewrite(8)
relocated_maps none
Generic mapping table outgoing SMTP mail smtp(8) smtp_generic_maps none
Local alias database local mail only local(8) alias_maps none
Local per-user .forward files local mail only local(8) forward_path none
Local catch-all address local mail only local(8) luser_relay none

Address rewriting when mail is received

The cleanup(8) server receives mail from outside of Postfix as well as mail from internal sources such as forwarded mail, undeliverable mail that is bounced to the sender, and postmaster notifications about problems with the mail system.

The cleanup(8) server transforms the sender, recipients and message content into a standard form before writing it to an incoming queue file. The server cleans up sender and recipient addresses in message headers and in the envelope, adds missing message headers such as From: or Date: that are required by mail standards, and removes message headers such as Bcc: that should not be present. The cleanup(8) server delegates the more complex address manipulations to the trivial-rewrite(8) server as described later in this document.

Address manipulations at this stage are:

Rewrite addresses to standard form

Before the cleanup(8) daemon runs an address through any address mapping lookup table, it first rewrites the address to the standard "user@@fully.qualified.domain" form, by sending the address to the trivial-rewrite(8) daemon. The purpose of rewriting to standard form is to reduce the number of entries needed in lookup tables.

The Postfix trivial-rewrite(8) daemon implements the following hard-coded address manipulations:

Rewrite "@@hosta,@@hostb:user@@site" to "user@@site"

In case you wonder what this is, the address form above is called a route address, and specifies that mail for "user@@site" be delivered via "hosta" and "hostb". Usage of this form has been deprecated for a long time. Postfix has no ability to handle route addresses, other than to strip off the route part.

NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

Rewrite "site!user" to "user@@site"

This feature is controlled by the boolean swap_bangpath parameter (default: yes). The purpose is to rewrite UUCP-style addresses to domain style. This is useful only when you receive mail via UUCP, but it probably does not hurt otherwise.

NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

Rewrite "user%domain" to "user@@domain"

This feature is controlled by the boolean allow_percent_hack parameter (default: yes). Typically, this is used in order to deal with monstrosities such as "user%domain@@otherdomain".

NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

Rewrite "user" to "user@@$myorigin"

This feature is controlled by the boolean append_at_myorigin parameter (default: yes). You should never turn off this feature, because a lot of Postfix components expect that all addresses have the form "user@@domain".

NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter; otherwise they append the domain name specified with the remote_header_rewrite_domain configuration parameter, if one is specified. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

If your machine is not the main machine for $myorigin and you wish to have some users delivered locally without going via that main machine, make an entry in the virtual alias table that redirects "user@@$myorigin" to "user@@$myhostname". See also the "delivering some users locally" section in the STANDARD_CONFIGURATION_README document.

Rewrite "user@@host" to "user@@host.$mydomain"

This feature is controlled by the boolean append_dot_mydomain parameter (default: yes). The purpose is to get consistent treatment of different forms of the same hostname.

NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter; otherwise they append the domain name specified with the remote_header_rewrite_domain configuration parameter, if one is specified. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

Some will argue that rewriting "host" to "host.domain" is bad. That is why it can be turned off. Others like the convenience of having Postfix's own domain appended automatically.

Rewrite "user@@site." to "user@@site" (without the trailing dot).

A single trailing dot is silently removed. However, an address that ends in multiple dots will be rejected as an invalid address.

NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

Canonical address mapping

The cleanup(8) daemon uses the canonical(5) tables to rewrite addresses in message envelopes and in message headers. By default all header and envelope addresses are rewritten; this is controlled with the canonical_classes configuration parameter.

NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

Address rewriting is done for local and remote addresses. The mapping is useful to replace login names by "Firstname.Lastname" style addresses, or to clean up invalid domains in mail addresses produced by legacy mail systems.

Canonical mapping is disabled by default. To enable, edit the canonical_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

Example:

/etc/postfix/main.cf:
    canonical_maps = hash:/etc/postfix/canonical

/etc/postfix/canonical:
    wietse        Wietse.Venema

For static mappings as shown above, lookup tables such as hash:, ldap:, mysql: or pgsql: are sufficient. For dynamic mappings you can use regular expression tables. This requires that you become intimately familiar with the ideas expressed in regexp_table(5), pcre_table(5) and canonical(5).

In addition to the canonical maps which are applied to both sender and recipient addresses, you can specify canonical maps that are applied only to sender addresses or to recipient addresses.

Example:

/etc/postfix/main.cf:
    sender_canonical_maps = hash:/etc/postfix/sender_canonical
    recipient_canonical_maps = hash:/etc/postfix/recipient_canonical

The sender and recipient canonical maps are applied before the common canonical maps. The sender_canonical_classes and recipient_canonical_classes parameters control what addresses are subject to sender_canonical_maps and recipient_canonical_maps mappings, respectively.

Sender-specific rewriting is useful when you want to rewrite ugly sender addresses to pretty ones, and still want to be able to send mail to the those ugly address without creating a mailer loop.

Canonical mapping can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

Example:

/etc/postfix/master.cf:
    :10026      inet  n       -       n       -       -       smtpd
        -o receive_override_options=no_address_mappings

Note: do not specify whitespace around the "=" here.

Address masquerading

Address masquerading is a method to hide hosts inside a domain behind their mail gateway, and to make it appear as if the mail comes from the gateway itself, instead of from individual machines.

NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

Address masquerading is disabled by default, and is implemented by the cleanup(8) server. To enable, edit the masquerade_domains parameter in the main.cf file and specify one or more domain names separated by whitespace or commas. When Postfix tries to masquerade a domain, it processes the list from left to right, and processing stops at the first match.

Example:

/etc/postfix/main.cf:
    masquerade_domains = foo.example.com example.com

strips "any.thing.foo.example.com" to "foo.example.com", but strips "any.thing.else.example.com" to "example.com".

A domain name prefixed with "!" means do not masquerade this domain or its subdomains:

/etc/postfix/main.cf:
    masquerade_domains = !foo.example.com example.com

does not change "any.thing.foo.example.com" and "foo.example.com", but strips "any.thing.else.example.com" to "example.com".

The masquerade_exceptions configuration parameter specifies what user names should not be subjected to address masquerading. Specify one or more user names separated by whitespace or commas.

Example:

/etc/postfix/main.cf:
    masquerade_exceptions = root

By default, Postfix makes no exceptions.

Subtle point: by default, address masquerading is applied only to message headers and to envelope sender addresses, but not to envelope recipients. This allows you to use address masquerading on a mail gateway machine, while still being able to forward mail from outside to users on individual machines.

In order to subject envelope recipient addresses to masquerading, too, specify (Postfix version 1.1 and later):

/etc/postfix/main.cf:
    masquerade_classes = envelope_sender, envelope_recipient,
        header_sender, header_recipient

If you rewrite the envelope recipient like this, Postfix will no longer be able to send mail to individual machines.

Address masquerading can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

Example:

/etc/postfix/master.cf:
    :10026      inet  n       -       n       -       -       smtpd
        -o receive_override_options=no_address_mappings

Note: do not specify whitespace around the "=" here.

Automatic BCC recipients

After applying the canonical and masquerade mappings, the cleanup(8) daemon can generate optional BCC (blind carbon-copy) recipients. Postfix provides three mechanisms:

always_bcc = address
Deliver a copy of all mail to the specified address. In Postfix versions before 2.1, this feature is implemented by smtpd(8), qmqpd(8), or pickup(8).
sender_bcc_maps = type:table
Search the specified "type:table" lookup table with the envelope sender address for an automatic BCC address. This feature is available in Postfix 2.1 and later.
recipient_bcc_maps = type:table
Search the specified "type:table" lookup table with the envelope recipient address for an automatic BCC address. This feature is available in Postfix 2.1 and later.

Note: automatic BCC recipients are produced only for new mail. To avoid mailer loops, automatic BCC recipients are not generated for mail that Postfix forwards internally, nor for mail that Postfix generates itself.

Automatic BCC recipients (including always_bcc) can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

Example:

/etc/postfix/master.cf:
    :10026      inet  n       -       n       -       -       smtpd
        -o receive_override_options=no_address_mappings

Note: do not specify whitespace around the "=" here.

Virtual aliasing

Before writing the recipients to the queue file, the cleanup(8) daemon uses the optional virtual(5) alias tables to redirect mail for recipients. The mapping affects only envelope recipient addresses; it has no effect on message headers or envelope sender addresses. Virtual alias lookups are useful to redirect mail for virtual alias domains to real user mailboxes, and to redirect mail for domains that no longer exist. Virtual alias lookups can also be used to transform " Firstname.Lastname " back into UNIX login names, although it seems that local aliases may be a more appropriate vehicle. See the VIRTUAL_README document for an overview of methods to host virtual domains with Postfix.

Virtual aliasing is disabled by default. To enable, edit the virtual_alias_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

Example:

/etc/postfix/main.cf:
    virtual_alias_maps = hash:/etc/postfix/virtual

/etc/postfix/virtual:
    Wietse.Venema        wietse

Addresses found in virtual alias maps are subjected to another iteration of virtual aliasing, but are not subjected to canonical mapping, in order to avoid loops.

For static mappings as shown above, lookup tables such as hash:, ldap:, mysql: or pgsql: are sufficient. For dynamic mappings you can use regular expression tables. This requires that you become intimately familiar with the ideas expressed in regexp_table(5), pcre_table(5) and virtual(5).

Virtual aliasing can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

Example:

/etc/postfix/master.cf:
    :10026      inet  n       -       n       -       -       smtpd
        -o receive_override_options=no_address_mappings

Note: do not specify whitespace around the "=" here.

At this point the message is ready to be stored into the Postfix incoming queue.

Address rewriting when mail is delivered

The Postfix queue manager sorts mail according to its destination and gives it to Postfix delivery agents such as local(8), smtp(8), or lmtp(8). Just like the cleanup(8) server, the Postfix queue manager delegates the more complex address manipulations to the trivial-rewrite(8) server.

Address manipulations at this stage are:

Each Postfix delivery agent tries to deliver the mail to its destination, while encapsulating the sender, recipients, and message content according to the rules of the SMTP, LMTP, etc. protocol. When mail cannot be delivered, it is either returned to the sender or moved to the deferred queue and tried again later.

Address manipulations when mail is delivered via the smtp(8) delivery agent:

Address manipulations when mail is delivered via the local(8) delivery agent:

The remainder of this document presents each address manipulation step in more detail, with specific examples or with pointers to documentation with examples.

Resolve address to destination

The Postfix qmgr(8) queue manager selects new mail from the incoming queue or old mail from the deferred queue, and asks the trivial-rewrite(8) address rewriting and resolving daemon where it should be delivered.

As of version 2.0, Postfix distinguishes four major address classes. Each class has its own list of domain names, and each class has its own default delivery method, as shown in the table below. See the ADDRESS_CLASS_README document for the fine details. Postfix versions before 2.0 only distinguish between local delivery and everything else.

Destination domain list Default delivery method Availability
$mydestination, $inet_interfaces, $proxy_interfaces $local_transport Postfix 1.0
$virtual_mailbox_domains $virtual_transport Postfix 2.0
$relay_domains $relay_transport Postfix 2.0
none $default_transport Postfix 1.0

Mail transport switch

Once the trivial-rewrite(8) daemon has determined a default delivery method it searches the optional transport(5) table for information that overrides the message destination and/or delivery method. Typical use of the transport(5) table is to send mail to a system that is not connected to the Internet, or to use a special SMTP client configuration for destinations that have special requirements. See, for example, the STANDARD_CONFIGURATION_README and UUCP_README documents, and the examples in the transport(5) manual page.

Transport table lookups are disabled by default. To enable, edit the transport_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

Example:

/etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport

Relocated users table

Next, the trivial-rewrite(8) address rewriting and resolving daemon runs each recipient through the relocated(5) database. This table provides information on how to reach users that no longer have an account, or what to do with mail for entire domains that no longer exist. When mail is sent to an address that is listed in this table, the message is returned to the sender with an informative message.

The relocated(5) database is searched after transport(5) table lookups, in anticipation of transport(5) tables that can replace one recipient address by a different one.

Lookups of relocated users are disabled by default. To enable, edit the relocated_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

Example:

/etc/postfix/main.cf:
    relocated_maps = hash:/etc/postfix/relocated

/etc/postfix/relocated:
    username@@example.com      otheruser@@elsewhere.tld

As of Postfix version 2, mail for a relocated user will be rejected by the SMTP server with the reason "user has moved to otheruser@@elsewhere.tld". Older Postfix versions will receive the mail first, and then return it to the sender as undeliverable, with the same reason.

Generic mapping for outgoing SMTP mail

Some hosts have no valid Internet domain name, and instead use a name such as localdomain.local. This can be a problem when you want to send mail over the Internet, because many mail servers reject mail addresses with invalid domain names.

With the smtp_generic_maps parameter you can specify generic(5) lookup tables that replace local mail addresses by valid Internet addresses when mail leaves the machine via SMTP. The generic(5) mapping replaces envelope and header addresses, and is non-recursive. It does not happen when you send mail between addresses on the local machine.

This feature is available in Postfix version 2.2 and later.

Example:

/etc/postfix/main.cf:
    smtp_generic_maps = hash:/etc/postfix/generic

/etc/postfix/generic:
    his@@localdomain.local		hisaccount@@hisisp.example
    her@@localdomain.local		heraccount@@herisp.example
    @@localdomain.local			hisaccount+local@@hisisp.example

When mail is sent to a remote host via SMTP, this replaces his@@localdomain.local by his ISP mail address, replaces her@@localdomain.local by her ISP mail address, and replaces other local addresses by his ISP account, with an address extension of +local (this example assumes that the ISP supports "+" style address extensions).

Local alias database

When mail is to be delivered locally, the local(8) delivery agent runs each local recipient name through the aliases(5) database. The mapping does not affect addresses in message headers. Local aliases are typically used to implement distribution lists, or to direct mail for standard aliases such as postmaster to real people. The table can also be used to map "Firstname.Lastname" addresses to login names.

Alias lookups are enabled by default. The default configuration depends on the operating system environment, but it is typically one of the following:

/etc/postfix/main.cf:
    alias_maps = hash:/etc/aliases
    alias_maps = dbm:/etc/aliases, nis:mail.aliases

The pathname of the alias database file is controlled with the alias_database configuration parameter. The value is system dependent. Usually it is one of the following:

/etc/postfix/main.cf:
    alias_database = hash:/etc/aliases (4.4BSD, LINUX)
    alias_database = dbm:/etc/aliases (4.3BSD, SYSV<4)
    alias_database = dbm:/etc/mail/aliases (SYSV4)

An aliases(5) file can specify that mail should be delivered to a local file, or to a command that receives the message in the standard input stream. For security reasons, deliveries to command and file destinations are performed with the rights of the alias database owner. A default userid, default_privs, is used for deliveries to commands or files in "root"-owned aliases.

Local per-user .forward files

With delivery via the local(8) deliver agent, users can control their own mail delivery by specifying destinations in a file called .forward in their home directories. The syntax of these files is the same as with the local aliases(5) file, except that the left-hand side of the alias (lookup key and colon) are not present.

Local catch-all address

When the local(8) delivery agent finds that a message recipient does not exist, the message is normally returned to the sender ("user unknown"). Sometimes it is desirable to forward mail for non-existing recipients to another machine. For this purpose you can specify an alternative destination with the luser_relay configuration parameter.

Alternatively, mail for non-existent recipients can be delegated to an entirely different message transport, as specified with the fallback_transport configuration parameter. For details, see the local(8) delivery agent documentation.

Note: if you use the luser_relay feature in order to receive mail for non-UNIX accounts, then you must specify:

/etc/postfix/main.cf:
    local_recipient_maps =

(i.e. empty) in the main.cf file, otherwise the Postfix SMTP server will reject mail for non-UNIX accounts with "User unknown in local recipient table". See the LOCAL_RECIPIENT_README file for more information on this.

luser_relay can specify one address. It is subjected to "$name" expansions. Examples:

$user@@other.host

The bare username, without address extension, is prepended to "@@other.host". For example, mail for "username+foo" is sent to "username@@other.host".

$local@@other.host

The entire original recipient localpart, including address extension, is prepended to "@@other.host". For example, mail for "username+foo" is sent to "username+foo@@other.host".

sysadmin+$user

The bare username, without address extension, is appended to "sysadmin". For example, mail for "username+foo" is sent to "sysadmin+username".

sysadmin+$local

The entire original recipient localpart, including address extension, is appended to "sysadmin". For example, mail for "username+foo" is sent to "sysadmin+username+foo".

Debugging your address manipulations

Postfix version 2.1 and later can produce mail delivery reports for debugging purposes. These reports not only show sender/recipient addresses after address rewriting and alias expansion or forwarding, they also show information about delivery to mailbox, delivery to non-Postfix command, responses from remote SMTP servers, and so on.

Postfix can produce two types of mail delivery reports for debugging:

These reports contain information that is generated by Postfix delivery agents. Since these run as daemon processes and do not interact with users directly, the result is sent as mail to the sender of the test message. The format of these reports is practically identical to that of ordinary non-delivery notifications.

As an example, below is the delivery report that is produced with the command "sendmail -bv postfix-users@@postfix.org". The first part of the report contains human-readable text. In this case, mail would be delivered via mail.cloud9.net, and the SMTP server replies with "250 Ok". Other reports may show delivery to mailbox, or delivery to non-Postfix command.

Content-Description: Notification
Content-Type: text/plain

This is the mail system at host spike.porcupine.org.

Enclosed is the mail delivery report that you requested.

                        The mail system

<postfix-users@@postfix.org>: delivery via mail.cloud9.net[168.100.1.4]: 250 2.1.5 Ok

The second part of the report is in machine-readable form, and includes the following information:

Some details depend on Postfix version. The example below is for Postfix version 2.3 and later.

Content-Description: Delivery report
Content-Type: message/delivery-status

Reporting-MTA: dns; spike.porcupine.org
X-Postfix-Queue-ID: 84863BC0E5
X-Postfix-Sender: rfc822; wietse@@porcupine.org
Arrival-Date: Sun, 26 Nov 2006 17:01:01 -0500 (EST)

Final-Recipient: rfc822; postfix-users@@postfix.org
Action: deliverable
Status: 2.1.5
Remote-MTA: dns; mail.cloud9.net
Diagnostic-Code: smtp; 250 2.1.5 Ok

The third part of the report contains the message that Postfix would have delivered, including From: and To: message headers, so that you can see any effects of address rewriting on those. Mail submitted with "sendmail -bv" has no body content so none is shown in the example below.

Content-Description: Message
Content-Type: message/rfc822

Received: by spike.porcupine.org (Postfix, from userid 1001)
        id 84863BC0E5; Sun, 26 Nov 2006 17:01:01 -0500 (EST)
Subject: probe
To: postfix-users@@postfix.org
Message-Id: <20061126220101.84863BC0E5@@spike.porcupine.org>
Date: Sun, 26 Nov 2006 17:01:01 -0500 (EST)
From: wietse@@porcupine.org (Wietse Venema)
@ 1.1.1.1 log @Import Postfix 2.6.2. @ text @@ 1.1.1.2 log @Import Postfix 2.7.1. Major changes since Postfix 2.6.6: - Improved before-queue content filter performance. With "smtpd_proxy_options = speed_adjust", the Postfix SMTP server receives the entire message before it connects to a before-queue content filter. Typically, this allows Postfix to handle the same mail load with fewer content filter processes. - Improved address verification performance. The verify database is now persistent by default, and it is automatically cleaned periodically. Under overload conditions, the Postfix SMTP server no longer waits up to 6 seconds for an address probe to complete. - Support for reputation management based on the local SMTP client IP address. This is typically implemented with "FILTER transportname:" actions in access maps or header/body checks, and mail delivery transports in master.cf with unique smtp_bind_address values. @ text @d605 1 a605 1 127.0.0.1:10026 inet n - n - - smtpd d704 1 a704 1 127.0.0.1:10026 inet n - n - - smtpd d754 1 a754 1 127.0.0.1:10026 inet n - n - - smtpd d788 1 a788 1 /etc/postfix/virtual: d813 1 a813 1 127.0.0.1:10026 inet n - n - - smtpd @ 1.1.1.2.12.1 log @Rebase to HEAD as of a few days ago. @ text @d437 1 a437 1 "local_header_rewrite_clients = static:all".

d451 1 a451 1 "local_header_rewrite_clients = static:all".

d464 1 a464 1 "local_header_rewrite_clients = static:all".

d481 1 a481 1 static:all".

d505 1 a505 1 static:all".

d522 1 a522 1 "local_header_rewrite_clients = static:all".

d540 1 a540 1 "local_header_rewrite_clients = static:all".

d557 1 a557 1 canonical_maps = hash:/etc/postfix/canonical d564 1 a564 1

For static mappings as shown above, lookup tables such as hash:, d579 2 a580 2 sender_canonical_maps = hash:/etc/postfix/sender_canonical recipient_canonical_maps = hash:/etc/postfix/recipient_canonical d624 1 a624 1 "local_header_rewrite_clients = static:all".

d786 1 a786 1 virtual_alias_maps = hash:/etc/postfix/virtual d797 1 a797 1

For static mappings as shown above, lookup tables such as hash:, d934 1 a934 1 transport_maps = hash:/etc/postfix/transport d961 1 a961 1 relocated_maps = hash:/etc/postfix/relocated d995 1 a995 1 smtp_generic_maps = hash:/etc/postfix/generic d998 3 a1000 3 his@@localdomain.local hisaccount@@hisisp.example her@@localdomain.local heraccount@@herisp.example @@localdomain.local hisaccount+local@@hisisp.example d1028 2 a1029 2 alias_maps = hash:/etc/aliases alias_maps = dbm:/etc/aliases, nis:mail.aliases d1040 3 a1042 3 alias_database = hash:/etc/aliases (4.4BSD, LINUX) alias_database = dbm:/etc/aliases (4.3BSD, SYSV<4) alias_database = dbm:/etc/mail/aliases (SYSV4) @ 1.1.1.2.22.1 log @Rebase. @ text @d437 1 a437 1 "local_header_rewrite_clients = static:all".

d451 1 a451 1 "local_header_rewrite_clients = static:all".

d464 1 a464 1 "local_header_rewrite_clients = static:all".

d481 1 a481 1 static:all".

d505 1 a505 1 static:all".

d522 1 a522 1 "local_header_rewrite_clients = static:all".

d540 1 a540 1 "local_header_rewrite_clients = static:all".

d557 1 a557 1 canonical_maps = hash:/etc/postfix/canonical d564 1 a564 1

For static mappings as shown above, lookup tables such as hash:, d579 2 a580 2 sender_canonical_maps = hash:/etc/postfix/sender_canonical recipient_canonical_maps = hash:/etc/postfix/recipient_canonical d624 1 a624 1 "local_header_rewrite_clients = static:all".

d786 1 a786 1 virtual_alias_maps = hash:/etc/postfix/virtual d797 1 a797 1

For static mappings as shown above, lookup tables such as hash:, d934 1 a934 1 transport_maps = hash:/etc/postfix/transport d961 1 a961 1 relocated_maps = hash:/etc/postfix/relocated d995 1 a995 1 smtp_generic_maps = hash:/etc/postfix/generic d998 3 a1000 3 his@@localdomain.local hisaccount@@hisisp.example her@@localdomain.local heraccount@@herisp.example @@localdomain.local hisaccount+local@@hisisp.example d1028 2 a1029 2 alias_maps = hash:/etc/aliases alias_maps = dbm:/etc/aliases, nis:mail.aliases d1040 3 a1042 3 alias_database = hash:/etc/aliases (4.4BSD, LINUX) alias_database = dbm:/etc/aliases (4.3BSD, SYSV<4) alias_database = dbm:/etc/mail/aliases (SYSV4) @ 1.1.1.3 log @Import Postfix 2.11.1. The main changes since version 2.10.* are: - Support for PKI-less TLS server certificate verification with DANE (DNS-based Authentication of Named Entities) where the CA public key or the server certificate is identified via DNSSEC lookup. This requires a DNS resolver that validates DNSSEC replies. The problem with conventional PKI is that there are literally hundreds of organizations world-wide that can provide a certificate in anyone's name. DANE limits trust to the people who control the target DNS zone and its parent zones. - A new postscreen_dnsbl_whitelist_threshold feature to allow clients to skip postscreen tests based on their DNSBL score. This can eliminate email delays due to "after 220 greeting" protocol tests, which otherwise require that a client reconnects before it can deliver mail. Some providers such as Google don't retry from the same IP address, and that can result in large email delivery delays. - The recipient_delimiter feature now supports different delimiters, for example both "+" and "-". As before, this implementation recognizes exactly one delimiter character per email address, and exactly one address extension per email address. - Advanced master.cf query/update support to access service attributes as "name = value" pairs. For example to turn off chroot on all services use "postconf -F '*/*/chroot = n'", and to change/add a "-o name=value" setting use "postconf -P 'smtp/inet/name = value'". This was developed primarily to allow automated tools to manage Postfix systems without having to parse Postfix configuration files. @ text @d437 1 a437 1 "local_header_rewrite_clients = static:all".

d451 1 a451 1 "local_header_rewrite_clients = static:all".

d464 1 a464 1 "local_header_rewrite_clients = static:all".

d481 1 a481 1 static:all".

d505 1 a505 1 static:all".

d522 1 a522 1 "local_header_rewrite_clients = static:all".

d540 1 a540 1 "local_header_rewrite_clients = static:all".

d557 1 a557 1 canonical_maps = hash:/etc/postfix/canonical d564 1 a564 1

For static mappings as shown above, lookup tables such as hash:, d579 2 a580 2 sender_canonical_maps = hash:/etc/postfix/sender_canonical recipient_canonical_maps = hash:/etc/postfix/recipient_canonical d624 1 a624 1 "local_header_rewrite_clients = static:all".

d786 1 a786 1 virtual_alias_maps = hash:/etc/postfix/virtual d797 1 a797 1

For static mappings as shown above, lookup tables such as hash:, d934 1 a934 1 transport_maps = hash:/etc/postfix/transport d961 1 a961 1 relocated_maps = hash:/etc/postfix/relocated d995 1 a995 1 smtp_generic_maps = hash:/etc/postfix/generic d998 3 a1000 3 his@@localdomain.local hisaccount@@hisisp.example her@@localdomain.local heraccount@@herisp.example @@localdomain.local hisaccount+local@@hisisp.example d1028 2 a1029 2 alias_maps = hash:/etc/aliases alias_maps = dbm:/etc/aliases, nis:mail.aliases d1040 3 a1042 3 alias_database = hash:/etc/aliases (4.4BSD, LINUX) alias_database = dbm:/etc/aliases (4.3BSD, SYSV<4) alias_database = dbm:/etc/mail/aliases (SYSV4) @ 1.1.1.3.26.1 log @Pull up the following, requeste by kim in ticket #1779: external/ibm-public/postfix/dist/README_FILES/BDAT_README up to 1.1.1.2 external/ibm-public/postfix/dist/README_FILES/MAILLOG_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/POSTSCREEN_3_5_README up to 1.1.1.1 external/ibm-public/postfix/dist/html/BDAT_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/MAILLOG_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/makedefs.1.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/postlogd.8.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/POSTSCREEN_3_5_README.html up to 1.1.1.2 external/ibm-public/postfix/dist/html/postfix-doc.css up to 1.1.1.1 external/ibm-public/postfix/dist/man/man1/makedefs.1 up to 1.3 external/ibm-public/postfix/dist/man/man8/postlogd.8 up to 1.3 external/ibm-public/postfix/dist/mantools/missing-proxy-read-maps up to 1.1.1.3 external/ibm-public/postfix/dist/mantools/spelldiff up to 1.1.1.1 external/ibm-public/postfix/dist/mantools/check-double-cc up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-double-install-proto-text up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-double-proto-html up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/comment.c up to 1.2 external/ibm-public/postfix/dist/mantools/check-postfix-files up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-spell-cc up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-spell-install-proto-text up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-spell-proto-html up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/deroff up to 1.1.1.1 external/ibm-public/postfix/dist/mantools/find-double up to 1.1.1.1 external/ibm-public/postfix/dist/mantools/check-double-history up to 1.1.1.1 external/ibm-public/postfix/dist/mantools/check-spell-history up to 1.1.1.1 external/ibm-public/postfix/dist/mantools/check-table-proto up to 1.1.1.1 external/ibm-public/postfix/dist/proto/BDAT_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/MAILLOG_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/POSTSCREEN_3_5_README.html up to 1.1.1.2 external/ibm-public/postfix/dist/proto/stop.double-cc up to 1.1.1.2 external/ibm-public/postfix/dist/proto/stop.double-install-proto-text up to 1.1.1.1 external/ibm-public/postfix/dist/proto/stop.double-proto-html up to 1.1.1.2 external/ibm-public/postfix/dist/proto/stop.spell-cc up to 1.1.1.2 external/ibm-public/postfix/dist/proto/stop.spell-proto-html up to 1.1.1.2 external/ibm-public/postfix/dist/proto/stop.double-history up to 1.1.1.1 external/ibm-public/postfix/dist/proto/stop.spell-history up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/bounce_notify_util_tester.c up to 1.2 external/ibm-public/postfix/dist/src/bounce/logfile-no-msgid-no-eoh-event up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/logfile-no-msgid-with-eoh-event up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/logfile-with-msgid-no-eoh-event up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/logfile-with-msgid-with-eoh-event up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/logfile-with-msgid-with-filter up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/logfile-with-msgid-with-long-line up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/msgfile-no-msgid-no-eoh-event up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/msgfile-no-msgid-with-eoh-event up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/msgfile-with-msgid-no-eoh-event up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/msgfile-with-msgid-with-eoh-event up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/obs_template_test.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/msgfile-with-msgid-with-filter up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/msgfile-with-msgid-with-long-line up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/no-msgid-no-eoh-event-no-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/no-msgid-no-eoh-event-with-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/no-msgid-with-eoh-event-no-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/no-msgid-with-eoh-event-with-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/with-msgid-no-eoh-event-no-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/with-msgid-no-eoh-event-with-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/with-msgid-with-eoh-event-no-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/with-msgid-with-eoh-event-with-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/with-msgid-with-filter-no-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/with-msgid-with-filter-with-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/with-msgid-with-long-line-no-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/bounce/with-msgid-with-long-line-with-thread.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in13e up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in13f up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in13g up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in13h up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in13i up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref13e up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref13f up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref13g up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref13h up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref13i up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/test-queue-file13e up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/test-queue-file13f up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/test-queue-file13g up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/test-queue-file13h up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/test-queue-file13i up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in17a up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in17b up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in17c up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in17d up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in17e up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in17f up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.in17g up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17a1 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17a2 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17b1 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17b2 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17c1 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17c2 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17d1 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17d2 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17e1 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17e2 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17f1 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17f2 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17g1 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref17g2 up to 1.1.1.1 external/ibm-public/postfix/dist/src/cleanup/test-queue-file17 up to 1.1.1.1 external/ibm-public/postfix/dist/src/dns/dns_str_resflags.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_sec.c up to 1.2 external/ibm-public/postfix/dist/src/global/header_body_checks_strip.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/info_log_addr_form.c up to 1.2 external/ibm-public/postfix/dist/src/global/info_log_addr_form.h up to 1.2 external/ibm-public/postfix/dist/src/global/mail_addr_crunch.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/mail_addr_crunch.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/mail_addr_find.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/map_search.c up to 1.4 external/ibm-public/postfix/dist/src/global/map_search.h up to 1.2 external/ibm-public/postfix/dist/src/global/mail_addr_find.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/mail_addr_form.c up to 1.2 external/ibm-public/postfix/dist/src/global/mail_addr_form.h up to 1.2 external/ibm-public/postfix/dist/src/global/mail_addr_map.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/maillog_client.c up to 1.3 external/ibm-public/postfix/dist/src/global/maillog_client.h up to 1.2 external/ibm-public/postfix/dist/src/global/map_search.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/global/normalize_mailhost_addr.c up to 1.3 external/ibm-public/postfix/dist/src/global/normalize_mailhost_addr.h up to 1.2 external/ibm-public/postfix/dist/src/global/off_cvt.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/off_cvt.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/quote_822_local.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/global/quote_822_local.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/global/quote_flags.c up to 1.2 external/ibm-public/postfix/dist/src/global/reject_deliver_request.c up to 1.2 external/ibm-public/postfix/dist/src/global/compat_level.c up to 1.3 external/ibm-public/postfix/dist/src/global/compat_level.h up to 1.3 external/ibm-public/postfix/dist/src/global/test_main.c up to 1.2 external/ibm-public/postfix/dist/src/global/compat_level_convert.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/compat_level_convert.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/compat_level_expand.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/compat_level_expand.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/config_known_tcp_ports.c up to 1.2 external/ibm-public/postfix/dist/src/global/config_known_tcp_ports.h up to 1.2 external/ibm-public/postfix/dist/src/global/config_known_tcp_ports.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/delivered_hdr.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/hfrom_format.c up to 1.2 external/ibm-public/postfix/dist/src/global/hfrom_format.h up to 1.2 external/ibm-public/postfix/dist/src/global/hfrom_format.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/login_sender_match.c up to 1.2 external/ibm-public/postfix/dist/src/global/login_sender_match.h up to 1.2 external/ibm-public/postfix/dist/src/global/login_sender_match.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/sasl_mech_filter.c up to 1.2 external/ibm-public/postfix/dist/src/global/sasl_mech_filter.h up to 1.2 external/ibm-public/postfix/dist/src/global/test_main.h up to 1.2 external/ibm-public/postfix/dist/src/master/dgram_server.c up to 1.3 external/ibm-public/postfix/dist/src/postconf/extract_cfg.sh up to 1.1.1.1 external/ibm-public/postfix/dist/src/postconf/test64.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/postconf/test65.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/postconf/test66.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/postconf/test67.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/postconf/test68.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/postconf/test69.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/postconf/test70.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/postconf/test71.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/postmap/file_test.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/postmap/file_test.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/postmap/quote_test.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/postmap/quote_test.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/postmap/lmdb_abb up to 1.1.1.1 external/ibm-public/postfix/dist/src/postmap/lmdb_abb.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/smtp/smtp_misc.c up to 1.2 external/ibm-public/postfix/dist/src/smtp/smtp_map11.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/smtpd/smtpd_addr_valid.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_addr_valid.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/tls/bad-back-to-back-keys.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/bad-back-to-back-keys.pem.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/bad-ec-cert-before-key.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/bad-ec-cert-before-key.pem.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/bad-key-cert-mismatch.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/bad-key-cert-mismatch.pem.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/bad-rsa-key-last.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/bad-rsa-key-last.pem.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/ecca-cert.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/ecca-pkey.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/ecee-cert.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/ecee-pkey.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/ecroot-cert.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/ecroot-pkey.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/good-mixed-keyfirst.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/good-mixed-keyfirst.pem.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/good-mixed-keylast.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/good-mixed-keylast.pem.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/good-mixed-keymiddle.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/good-mixed-keymiddle.pem.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/goodchains.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/goodchains.pem.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/mkcert.sh up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/rsaca-cert.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/rsaca-pkey.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/rsaee-cert.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/rsaee-pkey.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/rsaroot-cert.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/rsaroot-pkey.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/tls_proxy_client_misc.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_proxy_client_print.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_proxy_client_scan.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_proxy_context_print.c up to 1.3 external/ibm-public/postfix/dist/src/tls/tls_proxy_context_scan.c up to 1.3 external/ibm-public/postfix/dist/src/tls/tls_proxy_server_print.c up to 1.3 external/ibm-public/postfix/dist/src/tls/tls_proxy_server_scan.c up to 1.3 external/ibm-public/postfix/dist/src/tls/warn-mixed-multi-key.pem up to 1.1.1.1 external/ibm-public/postfix/dist/src/tls/warn-mixed-multi-key.pem.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/trivial-rewrite/transport.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/trivial-rewrite/transport.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/mkmap_db.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap.h up to 1.2 external/ibm-public/postfix/dist/src/util/argv_attr.h up to 1.3 external/ibm-public/postfix/dist/src/util/argv_attr_print.c up to 1.3 external/ibm-public/postfix/dist/src/util/argv_attr_scan.c up to 1.3 external/ibm-public/postfix/dist/src/util/byte_mask.c up to 1.2 external/ibm-public/postfix/dist/src/util/byte_mask.h up to 1.2 external/ibm-public/postfix/dist/src/util/byte_mask.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/byte_mask.ref0 up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/byte_mask.ref1 up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/byte_mask.ref2 up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_file.c up to 1.3 external/ibm-public/postfix/dist/src/util/dict_cidr_file.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/logwriter.c up to 1.2 external/ibm-public/postfix/dist/src/util/dict_cidr_file.map up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_cidr_file.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_inline_file.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_pcre_file.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_pcre_file.map up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_pcre_file.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_pipe_test.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_pipe_test.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_random.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_random_file.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_regexp_file.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_regexp_file.map up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_regexp_file.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_static_file.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_thash.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_thash.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_union_test.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_union_test.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/logwriter.h up to 1.2 external/ibm-public/postfix/dist/src/util/miss_endif_cidr.map up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/miss_endif_cidr.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/miss_endif_pcre.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/miss_endif_re.map up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/miss_endif_regexp.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/msg_logger.c up to 1.3 external/ibm-public/postfix/dist/src/util/msg_logger.h up to 1.2 external/ibm-public/postfix/dist/src/util/split_qnameval.c up to 1.2 external/ibm-public/postfix/dist/src/util/unix_dgram_connect.c up to 1.3 external/ibm-public/postfix/dist/src/util/unix_dgram_listen.c up to 1.3 external/ibm-public/postfix/dist/src/util/vbuf_print_test.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/vbuf_print_test.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/vstream_test.in up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/vstream_test.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/vstring_test.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/sane_strtol.c up to 1.2 external/ibm-public/postfix/dist/src/util/argv_split_at.c up to 1.2 external/ibm-public/postfix/dist/src/util/dict_stream.c up to 1.2 external/ibm-public/postfix/dist/src/util/dict_inline_cidr.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_inline_pcre.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_inline_regexp.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/dict_stream.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/find_inet.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/hash_fnv.c up to 1.3 external/ibm-public/postfix/dist/src/util/hash_fnv.h up to 1.3 external/ibm-public/postfix/dist/src/util/known_tcp_ports.c up to 1.2 external/ibm-public/postfix/dist/src/util/known_tcp_ports.h up to 1.2 external/ibm-public/postfix/dist/src/util/known_tcp_ports.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/ldseed.c up to 1.2 external/ibm-public/postfix/dist/src/util/ldseed.h up to 1.2 external/ibm-public/postfix/dist/src/util/mystrtok.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/sane_strtol.h up to 1.2 external/ibm-public/postfix/dist/src/util/inet_addr_sizes.c up to 1.2 external/ibm-public/postfix/dist/src/util/inet_addr_sizes.h up to 1.2 external/ibm-public/postfix/dist/src/util/inet_prefix_top.c up to 1.2 external/ibm-public/postfix/dist/src/util/inet_prefix_top.h up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_cdb.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_dbm.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_fail.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_lmdb.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_open.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_sdbm.c up to 1.2 external/ibm-public/postfix/dist/src/postlogd/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/postlogd/postlogd.c up to 1.3 external/ibm-public/postfix/dist/RELEASE_NOTES-3.1 up to 1.1.1.1 external/ibm-public/postfix/dist/RELEASE_NOTES-3.2 up to 1.1.1.1 external/ibm-public/postfix/dist/RELEASE_NOTES-3.3 up to 1.1.1.1 external/ibm-public/postfix/dist/RELEASE_NOTES-3.4 up to 1.1.1.1 external/ibm-public/postfix/dist/RELEASE_NOTES-3.5 up to 1.1.1.1 external/ibm-public/postfix/dist/RELEASE_NOTES-3.6 up to 1.1.1.1 external/ibm-public/postfix/dist/WISHLIST up to 1.1.1.2 external/ibm-public/postfix/dist/RELEASE_NOTES-3.7 up to 1.1.1.1 external/ibm-public/postfix/dist/README_FILES/CYRUS_README delete external/ibm-public/postfix/dist/src/global/mkmap.h delete external/ibm-public/postfix/dist/src/global/mkmap_cdb.c delete external/ibm-public/postfix/dist/src/global/mkmap_db.c delete external/ibm-public/postfix/dist/src/global/mkmap_dbm.c delete external/ibm-public/postfix/dist/src/global/mkmap_fail.c delete external/ibm-public/postfix/dist/src/global/mkmap_lmdb.c delete external/ibm-public/postfix/dist/src/global/mkmap_open.c delete external/ibm-public/postfix/dist/src/global/mkmap_sdbm.c delete external/ibm-public/postfix/dist/src/smtp/map11_map delete external/ibm-public/postfix/dist/src/tls/tls_proxy_print.c delete external/ibm-public/postfix/dist/src/tls/tls_proxy_scan.c delete external/ibm-public/postfix/dist/src/util/percentm.c delete external/ibm-public/postfix/dist/src/util/percentm.h delete external/ibm-public/postfix/Makefile.inc up to 1.31 (+patch) external/ibm-public/postfix/dist/AAAREADME up to 1.1.1.4 external/ibm-public/postfix/dist/HISTORY up to 1.1.1.29 external/ibm-public/postfix/dist/INSTALL up to 1.1.1.9 external/ibm-public/postfix/dist/LICENSE up to 1.1.1.2 external/ibm-public/postfix/dist/Makefile up to 1.1.1.3 external/ibm-public/postfix/dist/Makefile.in up to 1.1.1.10 external/ibm-public/postfix/dist/Makefile.init up to 1.1.1.3 external/ibm-public/postfix/dist/RELEASE_NOTES up to 1.1.1.17 external/ibm-public/postfix/dist/TLS_ACKNOWLEDGEMENTS up to 1.1.1.2 external/ibm-public/postfix/dist/TLS_CHANGES up to 1.1.1.2 external/ibm-public/postfix/dist/TLS_LICENSE up to 1.1.1.2 external/ibm-public/postfix/dist/US_PATENT_6321267 up to 1.1.1.2 external/ibm-public/postfix/dist/makedefs up to 1.16 external/ibm-public/postfix/dist/postfix-env.sh up to 1.1.1.2 external/ibm-public/postfix/dist/postfix-install up to 1.8 external/ibm-public/postfix/dist/README_FILES/AAAREADME up to 1.1.1.6 external/ibm-public/postfix/dist/README_FILES/ADDRESS_CLASS_README up to 1.1.1.2 external/ibm-public/postfix/dist/README_FILES/ADDRESS_REWRITING_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/ADDRESS_VERIFICATION_README up to 1.10 external/ibm-public/postfix/dist/README_FILES/BACKSCATTER_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/BASIC_CONFIGURATION_README up to 1.1.1.6 external/ibm-public/postfix/dist/README_FILES/BUILTIN_FILTER_README up to 1.1.1.3 external/ibm-public/postfix/dist/README_FILES/COMPATIBILITY_README up to 1.1.1.3 external/ibm-public/postfix/dist/README_FILES/CONNECTION_CACHE_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/DATABASE_README up to 1.1.1.9 external/ibm-public/postfix/dist/README_FILES/DB_README up to 1.1.1.3 external/ibm-public/postfix/dist/README_FILES/DEBUG_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/FILTER_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/FORWARD_SECRECY_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/INSTALL up to 1.10 external/ibm-public/postfix/dist/README_FILES/IPV6_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/LDAP_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/LINUX_README up to 1.1.1.3 external/ibm-public/postfix/dist/README_FILES/LMDB_README up to 1.1.1.3 external/ibm-public/postfix/dist/README_FILES/MILTER_README up to 1.1.1.9 external/ibm-public/postfix/dist/README_FILES/MULTI_INSTANCE_README up to 1.1.1.7 external/ibm-public/postfix/dist/README_FILES/MYSQL_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/OVERVIEW up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/PCRE_README up to 1.1.1.3 external/ibm-public/postfix/dist/README_FILES/PGSQL_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/POSTSCREEN_README up to 1.1.1.7 external/ibm-public/postfix/dist/README_FILES/QSHAPE_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/RELEASE_NOTES up to 1.1.1.17 external/ibm-public/postfix/dist/README_FILES/SASL_README up to 1.1.1.11 external/ibm-public/postfix/dist/README_FILES/SCHEDULER_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/SMTPD_ACCESS_README up to 1.1.1.6 external/ibm-public/postfix/dist/README_FILES/SMTPD_POLICY_README up to 1.1.1.7 external/ibm-public/postfix/dist/README_FILES/SMTPD_PROXY_README up to 1.1.1.6 external/ibm-public/postfix/dist/README_FILES/SMTPUTF8_README up to 1.1.1.3 external/ibm-public/postfix/dist/README_FILES/SOHO_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/SQLITE_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/STANDARD_CONFIGURATION_README up to 1.1.1.6 external/ibm-public/postfix/dist/README_FILES/STRESS_README up to 1.1.1.6 external/ibm-public/postfix/dist/README_FILES/TLS_LEGACY_README up to 1.1.1.3 external/ibm-public/postfix/dist/README_FILES/TLS_README up to 1.14 external/ibm-public/postfix/dist/README_FILES/TUNING_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/VIRTUAL_README up to 1.1.1.3 external/ibm-public/postfix/dist/README_FILES/XCLIENT_README up to 1.1.1.4 external/ibm-public/postfix/dist/conf/LICENSE up to 1.1.1.2 external/ibm-public/postfix/dist/conf/TLS_LICENSE up to 1.1.1.2 external/ibm-public/postfix/dist/conf/access up to 1.1.1.8 external/ibm-public/postfix/dist/conf/aliases up to 1.1.1.5 external/ibm-public/postfix/dist/conf/canonical up to 1.1.1.5 external/ibm-public/postfix/dist/conf/generic up to 1.1.1.4 external/ibm-public/postfix/dist/conf/header_checks up to 1.1.1.6 external/ibm-public/postfix/dist/conf/main.cf up to 1.10 external/ibm-public/postfix/dist/conf/master.cf up to 1.11 external/ibm-public/postfix/dist/conf/post-install up to 1.4 external/ibm-public/postfix/dist/conf/postfix-files up to 1.9 external/ibm-public/postfix/dist/conf/postfix-script up to 1.4 external/ibm-public/postfix/dist/conf/postfix-tls-script up to 1.5 external/ibm-public/postfix/dist/conf/postmulti-script up to 1.3 external/ibm-public/postfix/dist/conf/relocated up to 1.1.1.3 external/ibm-public/postfix/dist/conf/transport up to 1.1.1.5 external/ibm-public/postfix/dist/conf/virtual up to 1.1.1.6 external/ibm-public/postfix/dist/html/ADDRESS_CLASS_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/ADDRESS_REWRITING_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/ADDRESS_VERIFICATION_README.html up to 1.11 external/ibm-public/postfix/dist/html/BACKSCATTER_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/BASIC_CONFIGURATION_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/BUILTIN_FILTER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/CDB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/COMPATIBILITY_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/CONNECTION_CACHE_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/CONTENT_INSPECTION_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/DATABASE_README.html up to 1.1.1.10 external/ibm-public/postfix/dist/html/DB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/DEBUG_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/DSN_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/ETRN_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/FILTER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/FORWARD_SECRECY_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/INSTALL.html up to 1.10 external/ibm-public/postfix/dist/html/IPV6_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/LDAP_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/LINUX_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/LMDB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/LOCAL_RECIPIENT_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/MAILDROP_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/MEMCACHE_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/MILTER_README.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/MULTI_INSTANCE_README.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/MYSQL_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/Makefile.in up to 1.1.1.7 external/ibm-public/postfix/dist/html/NFS_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/OVERVIEW.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/PACKAGE_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/PCRE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/PGSQL_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/POSTSCREEN_README.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/QSHAPE_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/RESTRICTION_CLASS_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/SASL_README.html up to 1.1.1.11 external/ibm-public/postfix/dist/html/SCHEDULER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/SMTPD_ACCESS_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/SMTPD_POLICY_README.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/SMTPD_PROXY_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/SMTPUTF8_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/SOHO_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/SQLITE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/STANDARD_CONFIGURATION_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/STRESS_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/TLS_LEGACY_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/TLS_README.html up to 1.15 external/ibm-public/postfix/dist/html/TUNING_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/UUCP_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/VERP_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/VIRTUAL_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/XCLIENT_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/XFORWARD_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/access.5.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/aliases.5.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/anvil.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/bounce.5.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/bounce.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/canonical.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/cidr_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/cleanup.8.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/defer.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/discard.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/dnsblog.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/error.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/flush.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/generic.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/header_checks.5.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/index.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/ldap_table.5.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/lmdb_table.5.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/lmtp.8.html up to 1.1.1.12 external/ibm-public/postfix/dist/html/local.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/mailq.1.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/master.5.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/master.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/memcache_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/mysql_table.5.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/newaliases.1.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/nisplus_table.5.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/oqmgr.8.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/pcre_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/pgsql_table.5.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/pickup.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/pipe.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postalias.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postcat.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postconf.1.html up to 1.1.1.11 external/ibm-public/postfix/dist/html/postconf.5.html up to 1.19 external/ibm-public/postfix/dist/html/postdrop.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postfix-manuals.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/postfix-tls.1.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/postfix-wrapper.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/postfix.1.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/postkick.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postlock.1.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/postlog.1.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/postmap.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postmulti.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postqueue.1.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/postscreen.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/postsuper.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/posttls-finger.1.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/proxymap.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/qmgr.8.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/qmqp-sink.1.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/qmqp-source.1.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/qmqpd.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/qshape.1.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/regexp_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/relocated.5.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/scache.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/sendmail.1.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/showq.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/smtp-sink.1.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/smtp-source.1.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/smtp.8.html up to 1.1.1.12 external/ibm-public/postfix/dist/html/smtpd.8.html up to 1.1.1.13 external/ibm-public/postfix/dist/html/socketmap_table.5.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/spawn.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/sqlite_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/tcp_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/tlsmgr.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/tlsproxy.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/trace.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/transport.5.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/trivial-rewrite.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/verify.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/virtual.5.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/virtual.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/man/Makefile.in up to 1.1.1.7 external/ibm-public/postfix/dist/man/man1/postalias.1 up to 1.4 external/ibm-public/postfix/dist/man/man1/postcat.1 up to 1.4 external/ibm-public/postfix/dist/man/man1/postconf.1 up to 1.4 external/ibm-public/postfix/dist/man/man1/postdrop.1 up to 1.4 external/ibm-public/postfix/dist/man/man1/postfix-tls.1 up to 1.3 external/ibm-public/postfix/dist/man/man1/postfix.1 up to 1.6 external/ibm-public/postfix/dist/man/man1/postkick.1 up to 1.3 external/ibm-public/postfix/dist/man/man1/postlock.1 up to 1.3 external/ibm-public/postfix/dist/man/man1/postlog.1 up to 1.5 external/ibm-public/postfix/dist/man/man1/postmap.1 up to 1.4 external/ibm-public/postfix/dist/man/man1/postmulti.1 up to 1.4 external/ibm-public/postfix/dist/man/man1/postqueue.1 up to 1.5 external/ibm-public/postfix/dist/man/man1/postsuper.1 up to 1.4 external/ibm-public/postfix/dist/man/man1/posttls-finger.1 up to 1.5 external/ibm-public/postfix/dist/man/man1/sendmail.1 up to 1.4 external/ibm-public/postfix/dist/man/man1/smtp-sink.1 up to 1.3 external/ibm-public/postfix/dist/man/man5/access.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/aliases.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/canonical.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/cidr_table.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/generic.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/header_checks.5 up to 1.3 external/ibm-public/postfix/dist/man/man5/ldap_table.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/lmdb_table.5 up to 1.3 external/ibm-public/postfix/dist/man/man5/master.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/mysql_table.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/pcre_table.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/pgsql_table.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/postconf.5 up to 1.19 external/ibm-public/postfix/dist/man/man5/regexp_table.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/relocated.5 up to 1.3 external/ibm-public/postfix/dist/man/man5/socketmap_table.5 up to 1.3 external/ibm-public/postfix/dist/man/man5/sqlite_table.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/tcp_table.5 up to 1.3 external/ibm-public/postfix/dist/man/man5/transport.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/virtual.5 up to 1.5 external/ibm-public/postfix/dist/man/man8/anvil.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/bounce.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/cleanup.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/discard.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/dnsblog.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/error.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/flush.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/local.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/master.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/oqmgr.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/pickup.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/pipe.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/postscreen.8 up to 1.5 external/ibm-public/postfix/dist/man/man8/proxymap.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/qmgr.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/qmqpd.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/scache.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/showq.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/smtp.8 up to 1.5 external/ibm-public/postfix/dist/man/man8/smtpd.8 up to 1.5 external/ibm-public/postfix/dist/man/man8/spawn.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/tlsmgr.8 up to 1.3 external/ibm-public/postfix/dist/man/man8/tlsproxy.8 up to 1.5 external/ibm-public/postfix/dist/man/man8/trivial-rewrite.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/verify.8 up to 1.4 external/ibm-public/postfix/dist/man/man8/virtual.8 up to 1.4 external/ibm-public/postfix/dist/mantools/ccformat up to 1.1.1.3 external/ibm-public/postfix/dist/mantools/check-postlink up to 1.1.1.3 external/ibm-public/postfix/dist/mantools/fixman up to 1.1.1.3 external/ibm-public/postfix/dist/mantools/make-relnotes up to 1.1.1.3 external/ibm-public/postfix/dist/mantools/make_soho_readme up to 1.1.1.4 external/ibm-public/postfix/dist/mantools/makemanidx up to 1.1.1.4 external/ibm-public/postfix/dist/mantools/man2html up to 1.1.1.5 external/ibm-public/postfix/dist/mantools/manlint up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/manspell up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/postconf2man up to 1.1.1.5 external/ibm-public/postfix/dist/mantools/postlink up to 1.1.1.13 external/ibm-public/postfix/dist/mantools/readme2html up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/spell up to 1.1.1.3 external/ibm-public/postfix/dist/mantools/srctoman up to 1.1.1.3 external/ibm-public/postfix/dist/proto/ADDRESS_CLASS_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/ADDRESS_REWRITING_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/ADDRESS_VERIFICATION_README.html up to 1.11 external/ibm-public/postfix/dist/proto/BACKSCATTER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/BASIC_CONFIGURATION_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/BUILTIN_FILTER_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/CDB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/COMPATIBILITY_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/CONNECTION_CACHE_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/CONTENT_INSPECTION_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/DATABASE_README.html up to 1.1.1.10 external/ibm-public/postfix/dist/proto/DB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/DEBUG_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/DSN_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/ETRN_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/FILTER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/FORWARD_SECRECY_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/INSTALL.html up to 1.10 external/ibm-public/postfix/dist/proto/IPV6_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/LDAP_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/LINUX_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/LMDB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/LOCAL_RECIPIENT_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/MAILDROP_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/MEMCACHE_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/MILTER_README.html up to 1.1.1.9 external/ibm-public/postfix/dist/proto/MULTI_INSTANCE_README.html up to 1.1.1.8 external/ibm-public/postfix/dist/proto/MYSQL_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/Makefile.in up to 1.1.1.7 external/ibm-public/postfix/dist/proto/NFS_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/OVERVIEW.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/PACKAGE_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/PCRE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/PGSQL_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/POSTSCREEN_README.html up to 1.1.1.8 external/ibm-public/postfix/dist/proto/QSHAPE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/RESTRICTION_CLASS_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/SASL_README.html up to 1.1.1.11 external/ibm-public/postfix/dist/proto/SCHEDULER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/SMTPD_ACCESS_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/SMTPD_POLICY_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/proto/SMTPD_PROXY_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/SMTPUTF8_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/SQLITE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/STANDARD_CONFIGURATION_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/STRESS_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/proto/TLS_LEGACY_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/TLS_README.html up to 1.14 external/ibm-public/postfix/dist/proto/TUNING_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/UUCP_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/VERP_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/VIRTUAL_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/XCLIENT_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/XFORWARD_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/access up to 1.1.1.8 external/ibm-public/postfix/dist/proto/aliases up to 1.1.1.6 external/ibm-public/postfix/dist/proto/canonical up to 1.1.1.5 external/ibm-public/postfix/dist/proto/cidr_table up to 1.1.1.6 external/ibm-public/postfix/dist/proto/generic up to 1.1.1.4 external/ibm-public/postfix/dist/proto/header_checks up to 1.1.1.7 external/ibm-public/postfix/dist/proto/ldap_table up to 1.1.1.7 external/ibm-public/postfix/dist/proto/lmdb_table up to 1.1.1.3 external/ibm-public/postfix/dist/proto/master up to 1.1.1.8 external/ibm-public/postfix/dist/proto/mysql_table up to 1.1.1.8 external/ibm-public/postfix/dist/proto/pcre_table up to 1.1.1.6 external/ibm-public/postfix/dist/proto/pgsql_table up to 1.1.1.8 external/ibm-public/postfix/dist/proto/postconf.html.prolog up to 1.1.1.5 external/ibm-public/postfix/dist/proto/postconf.man.prolog up to 1.1.1.4 external/ibm-public/postfix/dist/proto/postconf.proto up to 1.19 external/ibm-public/postfix/dist/proto/regexp_table up to 1.1.1.6 external/ibm-public/postfix/dist/proto/relocated up to 1.1.1.3 external/ibm-public/postfix/dist/proto/socketmap_table up to 1.1.1.3 external/ibm-public/postfix/dist/proto/sqlite_table up to 1.1.1.5 external/ibm-public/postfix/dist/proto/stop up to 1.1.1.7 external/ibm-public/postfix/dist/proto/tcp_table up to 1.1.1.4 external/ibm-public/postfix/dist/proto/transport up to 1.1.1.5 external/ibm-public/postfix/dist/proto/virtual up to 1.1.1.6 external/ibm-public/postfix/dist/src/anvil/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/anvil/anvil.c up to 1.4 external/ibm-public/postfix/dist/src/bounce/2template_test.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/bounce/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/bounce/bounce.c up to 1.4 external/ibm-public/postfix/dist/src/bounce/bounce_notify_util.c up to 1.4 external/ibm-public/postfix/dist/src/bounce/bounce_service.h up to 1.3 external/ibm-public/postfix/dist/src/bounce/bounce_template.c up to 1.4 external/ibm-public/postfix/dist/src/bounce/bounce_template.h up to 1.3 external/ibm-public/postfix/dist/src/bounce/bounce_templates.c up to 1.3 external/ibm-public/postfix/dist/src/bounce/template_test.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/cleanup/Makefile.in up to 1.1.1.9 external/ibm-public/postfix/dist/src/cleanup/cleanup.c up to 1.8 external/ibm-public/postfix/dist/src/cleanup/cleanup.h up to 1.10 external/ibm-public/postfix/dist/src/cleanup/cleanup_addr.c up to 1.3 external/ibm-public/postfix/dist/src/cleanup/cleanup_api.c up to 1.4 external/ibm-public/postfix/dist/src/cleanup/cleanup_body_edit.c up to 1.3 external/ibm-public/postfix/dist/src/cleanup/cleanup_envelope.c up to 1.5 external/ibm-public/postfix/dist/src/cleanup/cleanup_init.c up to 1.7 external/ibm-public/postfix/dist/src/cleanup/cleanup_map11.c up to 1.3 external/ibm-public/postfix/dist/src/cleanup/cleanup_map1n.c up to 1.4 external/ibm-public/postfix/dist/src/cleanup/cleanup_message.c up to 1.4 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.c up to 1.5 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref13c up to 1.1.1.2 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.ref13d up to 1.1.1.2 external/ibm-public/postfix/dist/src/cleanup/cleanup_out.c up to 1.3 external/ibm-public/postfix/dist/src/cleanup/cleanup_out_recipient.c up to 1.4 external/ibm-public/postfix/dist/src/cleanup/cleanup_region.c up to 1.3 external/ibm-public/postfix/dist/src/cleanup/cleanup_state.c up to 1.4 external/ibm-public/postfix/dist/src/discard/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/discard/discard.c up to 1.3 external/ibm-public/postfix/dist/src/dns/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/dns/dns.h up to 1.6 external/ibm-public/postfix/dist/src/dns/dns_lookup.c up to 1.8 external/ibm-public/postfix/dist/src/dns/dns_rr.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_rr_eq_sa.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_rr_eq_sa.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/dns/dns_rr_eq_sa.ref up to 1.1.1.5 external/ibm-public/postfix/dist/src/dns/dns_rr_to_pa.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/dns/dns_rr_to_sa.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/dns/dns_sa_to_rr.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_sa_to_rr.ref up to 1.1.1.5 external/ibm-public/postfix/dist/src/dns/dns_strrecord.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_strtype.c up to 1.2 external/ibm-public/postfix/dist/src/dns/dnsbl_ttl_127.0.0.1_bind_ncache.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/dns/dnsbl_ttl_127.0.0.1_bind_plain.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/dns/dnsbl_ttl_127.0.0.2_bind_plain.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/dns/error.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/dns/mxonly_test.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/dns/no-a.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/dns/no-aaaa.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/dns/no-mx.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/dns/nullmx_test.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/dns/nxdomain_test.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/dns/test_dns_lookup.c up to 1.3 external/ibm-public/postfix/dist/src/dnsblog/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/dnsblog/dnsblog.c up to 1.4 external/ibm-public/postfix/dist/src/error/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/error/error.c up to 1.3 external/ibm-public/postfix/dist/src/flush/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/flush/flush.c up to 1.4 external/ibm-public/postfix/dist/src/fsstone/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/global/Makefile.in up to 1.1.1.10 external/ibm-public/postfix/dist/src/global/abounce.c up to 1.3 external/ibm-public/postfix/dist/src/global/anvil_clnt.c up to 1.4 external/ibm-public/postfix/dist/src/global/anvil_clnt.h up to 1.3 external/ibm-public/postfix/dist/src/global/been_here.c up to 1.4 external/ibm-public/postfix/dist/src/global/been_here.h up to 1.3 external/ibm-public/postfix/dist/src/global/bounce.c up to 1.3 external/ibm-public/postfix/dist/src/global/bounce_log.c up to 1.3 external/ibm-public/postfix/dist/src/global/cleanup_strerror.c up to 1.2 external/ibm-public/postfix/dist/src/global/cleanup_user.h up to 1.3 external/ibm-public/postfix/dist/src/global/clnt_stream.c up to 1.4 external/ibm-public/postfix/dist/src/global/clnt_stream.h up to 1.2 external/ibm-public/postfix/dist/src/global/db_common.c up to 1.3 external/ibm-public/postfix/dist/src/global/debug_peer.c up to 1.3 external/ibm-public/postfix/dist/src/global/defer.c up to 1.3 external/ibm-public/postfix/dist/src/global/deliver_pass.c up to 1.3 external/ibm-public/postfix/dist/src/global/deliver_request.c up to 1.3 external/ibm-public/postfix/dist/src/global/deliver_request.h up to 1.3 external/ibm-public/postfix/dist/src/global/delivered_hdr.c up to 1.3 external/ibm-public/postfix/dist/src/global/dict_ldap.c up to 1.5 external/ibm-public/postfix/dist/src/global/dict_memcache.c up to 1.3 external/ibm-public/postfix/dist/src/global/dict_mysql.c up to 1.4 external/ibm-public/postfix/dist/src/global/dict_pgsql.c up to 1.4 external/ibm-public/postfix/dist/src/global/dict_proxy.c up to 1.3 external/ibm-public/postfix/dist/src/global/dict_proxy.h up to 1.3 external/ibm-public/postfix/dist/src/global/dict_sqlite.c up to 1.4 external/ibm-public/postfix/dist/src/global/dsb_scan.c up to 1.3 external/ibm-public/postfix/dist/src/global/dsb_scan.h up to 1.2 external/ibm-public/postfix/dist/src/global/dsn_print.c up to 1.3 external/ibm-public/postfix/dist/src/global/dsn_print.h up to 1.2 external/ibm-public/postfix/dist/src/global/dynamicmaps.c up to 1.4 external/ibm-public/postfix/dist/src/global/ehlo_mask.c up to 1.3 external/ibm-public/postfix/dist/src/global/ehlo_mask.h up to 1.3 external/ibm-public/postfix/dist/src/global/flush_clnt.c up to 1.3 external/ibm-public/postfix/dist/src/global/haproxy_srvr.c up to 1.3 external/ibm-public/postfix/dist/src/global/haproxy_srvr.h up to 1.2 external/ibm-public/postfix/dist/src/global/header_body_checks.c up to 1.3 external/ibm-public/postfix/dist/src/global/header_body_checks.h up to 1.3 external/ibm-public/postfix/dist/src/global/log_adhoc.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_addr_crunch.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_addr_crunch.h up to 1.2 external/ibm-public/postfix/dist/src/global/mail_addr_find.c up to 1.4 external/ibm-public/postfix/dist/src/global/mail_addr_find.h up to 1.2 external/ibm-public/postfix/dist/src/global/mail_addr_map.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_addr_map.h up to 1.2 external/ibm-public/postfix/dist/src/global/mail_command_client.c up to 1.4 external/ibm-public/postfix/dist/src/global/mail_conf.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_conf.h up to 1.3 external/ibm-public/postfix/dist/src/global/mail_conf_int.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_conf_long.c up to 1.2 external/ibm-public/postfix/dist/src/global/mail_conf_nint.c up to 1.2 external/ibm-public/postfix/dist/src/global/mail_conf_time.c up to 1.4 external/ibm-public/postfix/dist/src/global/mail_copy.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_dict.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_error.c up to 1.2 external/ibm-public/postfix/dist/src/global/mail_params.c up to 1.5 external/ibm-public/postfix/dist/src/global/mail_params.h up to 1.19 external/ibm-public/postfix/dist/src/global/mail_parm_split.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_proto.h up to 1.5 external/ibm-public/postfix/dist/src/global/mail_queue.h up to 1.3 external/ibm-public/postfix/dist/src/global/mail_stream.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_task.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_version.h up to 1.6 external/ibm-public/postfix/dist/src/global/maps.c up to 1.4 external/ibm-public/postfix/dist/src/global/maps.h up to 1.2 external/ibm-public/postfix/dist/src/global/maps.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/global/memcache_proto.c up to 1.3 external/ibm-public/postfix/dist/src/global/mime_state.c up to 1.3 external/ibm-public/postfix/dist/src/global/mkmap_proxy.c up to 1.2 external/ibm-public/postfix/dist/src/global/msg_stats.h up to 1.2 external/ibm-public/postfix/dist/src/global/msg_stats_print.c up to 1.3 external/ibm-public/postfix/dist/src/global/msg_stats_scan.c up to 1.3 external/ibm-public/postfix/dist/src/global/namadr_list.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/global/namadr_list.ref up to 1.1.1.5 external/ibm-public/postfix/dist/src/global/off_cvt.c up to 1.2 external/ibm-public/postfix/dist/src/global/opened.c up to 1.2 external/ibm-public/postfix/dist/src/global/post_mail.c up to 1.4 external/ibm-public/postfix/dist/src/global/post_mail.h up to 1.3 external/ibm-public/postfix/dist/src/global/quote_822_local.c up to 1.3 external/ibm-public/postfix/dist/src/global/quote_822_local.h up to 1.2 external/ibm-public/postfix/dist/src/global/quote_flags.h up to 1.2 external/ibm-public/postfix/dist/src/global/rcpt_buf.c up to 1.4 external/ibm-public/postfix/dist/src/global/rcpt_buf.h up to 1.2 external/ibm-public/postfix/dist/src/global/rcpt_print.c up to 1.3 external/ibm-public/postfix/dist/src/global/rcpt_print.h up to 1.2 external/ibm-public/postfix/dist/src/global/rec_type.h up to 1.3 external/ibm-public/postfix/dist/src/global/record.c up to 1.4 external/ibm-public/postfix/dist/src/global/resolve_clnt.c up to 1.4 external/ibm-public/postfix/dist/src/global/resolve_clnt.h up to 1.2 external/ibm-public/postfix/dist/src/global/rewrite_clnt.c up to 1.3 external/ibm-public/postfix/dist/src/global/scache.h up to 1.3 external/ibm-public/postfix/dist/src/global/scache_clnt.c up to 1.3 external/ibm-public/postfix/dist/src/global/sent.c up to 1.3 external/ibm-public/postfix/dist/src/global/server_acl.c up to 1.3 external/ibm-public/postfix/dist/src/global/server_acl.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/global/server_acl.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/global/smtp_reply_footer.c up to 1.3 external/ibm-public/postfix/dist/src/global/smtp_stream.c up to 1.5 external/ibm-public/postfix/dist/src/global/smtp_stream.h up to 1.4 external/ibm-public/postfix/dist/src/global/smtputf8.h up to 1.3 external/ibm-public/postfix/dist/src/global/split_addr.c up to 1.3 external/ibm-public/postfix/dist/src/global/split_addr.h up to 1.2 external/ibm-public/postfix/dist/src/global/strip_addr.c up to 1.4 external/ibm-public/postfix/dist/src/global/strip_addr.h up to 1.2 external/ibm-public/postfix/dist/src/global/strip_addr.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/global/trace.c up to 1.3 external/ibm-public/postfix/dist/src/global/uxtext.c up to 1.3 external/ibm-public/postfix/dist/src/global/verify.c up to 1.4 external/ibm-public/postfix/dist/src/global/verify_clnt.c up to 1.3 external/ibm-public/postfix/dist/src/global/verify_sender_addr.c up to 1.4 external/ibm-public/postfix/dist/src/global/xtext.c up to 1.3 external/ibm-public/postfix/dist/src/local/Makefile.in up to 1.1.1.8 external/ibm-public/postfix/dist/src/local/alias.c up to 1.3 external/ibm-public/postfix/dist/src/local/forward.c up to 1.4 external/ibm-public/postfix/dist/src/local/local.c up to 1.4 external/ibm-public/postfix/dist/src/local/local_expand.c up to 1.3 external/ibm-public/postfix/dist/src/local/mailbox.c up to 1.4 external/ibm-public/postfix/dist/src/local/unknown.c up to 1.8 external/ibm-public/postfix/dist/src/master/Makefile.in up to 1.1.1.7 external/ibm-public/postfix/dist/src/master/event_server.c up to 1.4 external/ibm-public/postfix/dist/src/master/mail_server.h up to 1.4 external/ibm-public/postfix/dist/src/master/master.c up to 1.4 external/ibm-public/postfix/dist/src/master/master.h up to 1.2 external/ibm-public/postfix/dist/src/master/master_conf.c up to 1.2 external/ibm-public/postfix/dist/src/master/master_ent.c up to 1.4 external/ibm-public/postfix/dist/src/master/master_listen.c up to 1.2 external/ibm-public/postfix/dist/src/master/master_monitor.c up to 1.3 external/ibm-public/postfix/dist/src/master/master_proto.h up to 1.2 external/ibm-public/postfix/dist/src/master/master_sig.c up to 1.3 external/ibm-public/postfix/dist/src/master/master_spawn.c up to 1.3 external/ibm-public/postfix/dist/src/master/master_vars.c up to 1.3 external/ibm-public/postfix/dist/src/master/master_wakeup.c up to 1.3 external/ibm-public/postfix/dist/src/master/multi_server.c up to 1.4 external/ibm-public/postfix/dist/src/master/single_server.c up to 1.4 external/ibm-public/postfix/dist/src/master/trigger_server.c up to 1.4 external/ibm-public/postfix/dist/src/milter/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/milter/milter.c up to 1.5 external/ibm-public/postfix/dist/src/milter/milter.h up to 1.4 external/ibm-public/postfix/dist/src/milter/milter8.c up to 1.5 external/ibm-public/postfix/dist/src/milter/milter_macros.c up to 1.3 external/ibm-public/postfix/dist/src/milter/test-milter.c up to 1.3 external/ibm-public/postfix/dist/src/oqmgr/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/oqmgr/qmgr.c up to 1.3 external/ibm-public/postfix/dist/src/oqmgr/qmgr.h up to 1.3 external/ibm-public/postfix/dist/src/oqmgr/qmgr_active.c up to 1.3 external/ibm-public/postfix/dist/src/oqmgr/qmgr_deliver.c up to 1.3 external/ibm-public/postfix/dist/src/oqmgr/qmgr_entry.c up to 1.3 external/ibm-public/postfix/dist/src/oqmgr/qmgr_error.c up to 1.2 external/ibm-public/postfix/dist/src/oqmgr/qmgr_feedback.c up to 1.2 external/ibm-public/postfix/dist/src/oqmgr/qmgr_message.c up to 1.4 external/ibm-public/postfix/dist/src/pickup/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/pickup/pickup.c up to 1.4 external/ibm-public/postfix/dist/src/pipe/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/pipe/pipe.c up to 1.4 external/ibm-public/postfix/dist/src/postalias/Makefile.in up to 1.1.1.6 external/ibm-public/postfix/dist/src/postalias/fail_test.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/postalias/fail_test.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/postalias/postalias.c up to 1.5 external/ibm-public/postfix/dist/src/postcat/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/postcat/postcat.c up to 1.4 external/ibm-public/postfix/dist/src/postconf/Makefile.in up to 1.1.1.11 external/ibm-public/postfix/dist/src/postconf/extract.awk up to 1.1.1.6 external/ibm-public/postfix/dist/src/postconf/install_vars.h up to 1.2 external/ibm-public/postfix/dist/src/postconf/postconf.c up to 1.4 external/ibm-public/postfix/dist/src/postconf/postconf.h up to 1.4 external/ibm-public/postfix/dist/src/postconf/postconf_builtin.c up to 1.4 external/ibm-public/postfix/dist/src/postconf/postconf_dbms.c up to 1.5 external/ibm-public/postfix/dist/src/postconf/postconf_edit.c up to 1.3 external/ibm-public/postfix/dist/src/postconf/postconf_lookup.c up to 1.4 external/ibm-public/postfix/dist/src/postconf/postconf_main.c up to 1.4 external/ibm-public/postfix/dist/src/postconf/postconf_master.c up to 1.8 external/ibm-public/postfix/dist/src/postconf/postconf_misc.c up to 1.3 external/ibm-public/postfix/dist/src/postconf/postconf_user.c up to 1.4 external/ibm-public/postfix/dist/src/postconf/test28.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/postconf/test29.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/postconf/test34.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/postconf/test35.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/postconf/test40.ref up to 1.1.1.4 external/ibm-public/postfix/dist/src/postconf/test41.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/postconf/test42.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/postconf/test43.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/postconf/test44.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/postconf/test58.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/postconf/test59.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/postdrop/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/postdrop/postdrop.c up to 1.4 external/ibm-public/postfix/dist/src/postfix/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/postfix/postfix.c up to 1.6 external/ibm-public/postfix/dist/src/postkick/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/postkick/postkick.c up to 1.4 external/ibm-public/postfix/dist/src/postlock/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/postlock/postlock.c up to 1.4 external/ibm-public/postfix/dist/src/postlog/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/postlog/postlog.c up to 1.5 external/ibm-public/postfix/dist/src/postmap/Makefile.in up to 1.1.1.7 external/ibm-public/postfix/dist/src/postmap/fail_test.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/postmap/fail_test.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/postmap/postmap.c up to 1.5 external/ibm-public/postfix/dist/src/postmulti/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/postmulti/postmulti.c up to 1.4 external/ibm-public/postfix/dist/src/postqueue/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/postqueue/postqueue.c up to 1.5 external/ibm-public/postfix/dist/src/postqueue/showq_compat.c up to 1.4 external/ibm-public/postfix/dist/src/postqueue/showq_json.c up to 1.4 external/ibm-public/postfix/dist/src/postscreen/Makefile.in up to 1.1.1.7 external/ibm-public/postfix/dist/src/postscreen/postscreen.c up to 1.5 external/ibm-public/postfix/dist/src/postscreen/postscreen.h up to 1.4 external/ibm-public/postfix/dist/src/postscreen/postscreen_dnsbl.c up to 1.4 external/ibm-public/postfix/dist/src/postscreen/postscreen_early.c up to 1.4 external/ibm-public/postfix/dist/src/postscreen/postscreen_endpt.c up to 1.4 external/ibm-public/postfix/dist/src/postscreen/postscreen_haproxy.c up to 1.3 external/ibm-public/postfix/dist/src/postscreen/postscreen_haproxy.h up to 1.2 external/ibm-public/postfix/dist/src/postscreen/postscreen_misc.c up to 1.4 external/ibm-public/postfix/dist/src/postscreen/postscreen_send.c up to 1.3 external/ibm-public/postfix/dist/src/postscreen/postscreen_smtpd.c up to 1.5 external/ibm-public/postfix/dist/src/postscreen/postscreen_starttls.c up to 1.4 external/ibm-public/postfix/dist/src/postscreen/postscreen_state.c up to 1.4 external/ibm-public/postfix/dist/src/postscreen/postscreen_tests.c up to 1.4 external/ibm-public/postfix/dist/src/postsuper/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/postsuper/postsuper.c up to 1.4 external/ibm-public/postfix/dist/src/posttls-finger/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/posttls-finger/posttls-finger.c up to 1.5 external/ibm-public/postfix/dist/src/proxymap/Makefile.in up to 1.1.1.6 external/ibm-public/postfix/dist/src/proxymap/proxymap.c up to 1.4 external/ibm-public/postfix/dist/src/qmgr/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/qmgr/qmgr.c up to 1.3 external/ibm-public/postfix/dist/src/qmgr/qmgr.h up to 1.3 external/ibm-public/postfix/dist/src/qmgr/qmgr_active.c up to 1.3 external/ibm-public/postfix/dist/src/qmgr/qmgr_deliver.c up to 1.3 external/ibm-public/postfix/dist/src/qmgr/qmgr_entry.c up to 1.3 external/ibm-public/postfix/dist/src/qmgr/qmgr_error.c up to 1.2 external/ibm-public/postfix/dist/src/qmgr/qmgr_feedback.c up to 1.2 external/ibm-public/postfix/dist/src/qmgr/qmgr_message.c up to 1.4 external/ibm-public/postfix/dist/src/qmqpd/Makefile.in up to 1.1.1.6 external/ibm-public/postfix/dist/src/qmqpd/qmqpd.c up to 1.4 external/ibm-public/postfix/dist/src/qmqpd/qmqpd_peer.c up to 1.3 external/ibm-public/postfix/dist/src/scache/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/scache/scache.c up to 1.4 external/ibm-public/postfix/dist/src/sendmail/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/sendmail/sendmail.c up to 1.4 external/ibm-public/postfix/dist/src/showq/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/showq/showq.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/Makefile.in up to 1.1.1.10 external/ibm-public/postfix/dist/src/smtp/lmtp_params.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp.c up to 1.13 external/ibm-public/postfix/dist/src/smtp/smtp.h up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_addr.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_addr.h up to 1.3 external/ibm-public/postfix/dist/src/smtp/smtp_chat.c up to 1.4 external/ibm-public/postfix/dist/src/smtp/smtp_connect.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_key.c up to 1.3 external/ibm-public/postfix/dist/src/smtp/smtp_map11.c up to 1.3 external/ibm-public/postfix/dist/src/smtp/smtp_map11.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtp/smtp_params.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_proto.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_rcpt.c up to 1.3 external/ibm-public/postfix/dist/src/smtp/smtp_reuse.c up to 1.4 external/ibm-public/postfix/dist/src/smtp/smtp_sasl_auth_cache.c up to 1.3 external/ibm-public/postfix/dist/src/smtp/smtp_sasl_glue.c up to 1.3 external/ibm-public/postfix/dist/src/smtp/smtp_sasl_proto.c up to 1.3 external/ibm-public/postfix/dist/src/smtp/smtp_session.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_state.c up to 1.3 external/ibm-public/postfix/dist/src/smtp/smtp_tls_policy.c up to 1.4 external/ibm-public/postfix/dist/src/smtp/smtp_trouble.c up to 1.3 external/ibm-public/postfix/dist/src/smtpd/Makefile.in up to 1.1.1.11 external/ibm-public/postfix/dist/src/smtpd/pfilter.c up to 1.2 (+patch) external/ibm-public/postfix/dist/src/smtpd/smtpd.c up to 1.20 external/ibm-public/postfix/dist/src/smtpd/smtpd.h up to 1.5 external/ibm-public/postfix/dist/src/smtpd/smtpd_acl.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_acl.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_chat.c up to 1.4 external/ibm-public/postfix/dist/src/smtpd/smtpd_chat.h up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_check.c up to 1.6 external/ibm-public/postfix/dist/src/smtpd/smtpd_check.h up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_check.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_check.in2 up to 1.1.1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_check.in3 up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_check.ref up to 1.1.1.5 external/ibm-public/postfix/dist/src/smtpd/smtpd_check.ref2 up to 1.1.1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_check_backup.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_check_backup.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_check_dsn.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_check_dsn.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_dns_filter.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_dnswl.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/smtpd/smtpd_dnswl.ref up to 1.1.1.4 external/ibm-public/postfix/dist/src/smtpd/smtpd_error.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_error.ref up to 1.1.1.4 external/ibm-public/postfix/dist/src/smtpd/smtpd_exp.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_exp.ref up to 1.1.1.5 external/ibm-public/postfix/dist/src/smtpd/smtpd_expand.h up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_haproxy.c up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_milter.c up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_nullmx.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_nullmx.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/smtpd/smtpd_peer.c up to 1.5 external/ibm-public/postfix/dist/src/smtpd/smtpd_proxy.c up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_resolve.c up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_resolve.h up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_sasl_glue.c up to 1.5 external/ibm-public/postfix/dist/src/smtpd/smtpd_sasl_proto.c up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_server.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/smtpd/smtpd_server.ref up to 1.1.1.4 external/ibm-public/postfix/dist/src/smtpd/smtpd_state.c up to 1.2 external/ibm-public/postfix/dist/src/smtpstone/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/smtpstone/smtp-sink.c up to 1.3 external/ibm-public/postfix/dist/src/smtpstone/smtp-source.c up to 1.3 external/ibm-public/postfix/dist/src/spawn/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/spawn/spawn.c up to 1.4 external/ibm-public/postfix/dist/src/tls/Makefile.in up to 1.1.1.10 external/ibm-public/postfix/dist/src/tls/tls.h up to 1.5 external/ibm-public/postfix/dist/src/tls/tls_bio_ops.c up to 1.1.1.6 external/ibm-public/postfix/dist/src/tls/tls_certkey.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_client.c up to 1.13 external/ibm-public/postfix/dist/src/tls/tls_dane.c up to 1.5 external/ibm-public/postfix/dist/src/tls/tls_dh.c up to 1.5 external/ibm-public/postfix/dist/src/tls/tls_fprint.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_mgr.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_misc.c up to 1.5 external/ibm-public/postfix/dist/src/tls/tls_proxy.h up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_proxy_clnt.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_rsa.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_scache.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_server.c up to 1.12 external/ibm-public/postfix/dist/src/tls/tls_session.c up to 1.3 external/ibm-public/postfix/dist/src/tls/tls_verify.c up to 1.4 external/ibm-public/postfix/dist/src/tlsmgr/Makefile.in up to 1.1.1.6 external/ibm-public/postfix/dist/src/tlsmgr/tlsmgr.c up to 1.4 external/ibm-public/postfix/dist/src/tlsproxy/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.c up to 1.6 external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.h up to 1.2 external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy_state.c up to 1.3 external/ibm-public/postfix/dist/src/trivial-rewrite/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/trivial-rewrite/resolve.c up to 1.4 external/ibm-public/postfix/dist/src/trivial-rewrite/rewrite.c up to 1.3 external/ibm-public/postfix/dist/src/trivial-rewrite/transport.c up to 1.4 external/ibm-public/postfix/dist/src/trivial-rewrite/trivial-rewrite.c up to 1.4 external/ibm-public/postfix/dist/src/trivial-rewrite/trivial-rewrite.h up to 1.3 external/ibm-public/postfix/dist/src/util/Makefile.in up to 1.1.1.11 external/ibm-public/postfix/dist/src/util/allascii.c up to 1.3 external/ibm-public/postfix/dist/src/util/alldig.c up to 1.2 external/ibm-public/postfix/dist/src/util/argv.c up to 1.4 external/ibm-public/postfix/dist/src/util/argv.h up to 1.4 external/ibm-public/postfix/dist/src/util/attr.h up to 1.5 external/ibm-public/postfix/dist/src/util/attr_clnt.c up to 1.3 external/ibm-public/postfix/dist/src/util/attr_clnt.h up to 1.3 external/ibm-public/postfix/dist/src/util/attr_print0.c up to 1.3 external/ibm-public/postfix/dist/src/util/attr_print64.c up to 1.3 external/ibm-public/postfix/dist/src/util/attr_print_plain.c up to 1.3 external/ibm-public/postfix/dist/src/util/attr_scan0.c up to 1.3 external/ibm-public/postfix/dist/src/util/attr_scan0.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/util/attr_scan64.c up to 1.3 external/ibm-public/postfix/dist/src/util/attr_scan64.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/util/attr_scan_plain.c up to 1.3 external/ibm-public/postfix/dist/src/util/attr_scan_plain.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/util/auto_clnt.c up to 1.4 external/ibm-public/postfix/dist/src/util/auto_clnt.h up to 1.2 external/ibm-public/postfix/dist/src/util/base32_code.h up to 1.3 external/ibm-public/postfix/dist/src/util/base64_code.h up to 1.3 external/ibm-public/postfix/dist/src/util/binhash.c up to 1.3 external/ibm-public/postfix/dist/src/util/binhash.h up to 1.3 external/ibm-public/postfix/dist/src/util/casefold.c up to 1.3 external/ibm-public/postfix/dist/src/util/check_arg.h up to 1.3 external/ibm-public/postfix/dist/src/util/cidr_match.c up to 1.4 external/ibm-public/postfix/dist/src/util/cidr_match.h up to 1.2 external/ibm-public/postfix/dist/src/util/clean_env.c up to 1.3 external/ibm-public/postfix/dist/src/util/clean_env.h up to 1.2 external/ibm-public/postfix/dist/src/util/connect.h up to 1.2 external/ibm-public/postfix/dist/src/util/dict.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict.h up to 1.5 external/ibm-public/postfix/dist/src/util/dict_alloc.c up to 1.3 external/ibm-public/postfix/dist/src/util/dict_cache.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_cdb.c up to 1.3 external/ibm-public/postfix/dist/src/util/dict_cdb.h up to 1.2 external/ibm-public/postfix/dist/src/util/dict_cidr.c up to 1.5 external/ibm-public/postfix/dist/src/util/dict_cidr.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/dict_cidr.map up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/dict_cidr.ref up to 1.1.1.4 external/ibm-public/postfix/dist/src/util/dict_db.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_db.h up to 1.4 external/ibm-public/postfix/dist/src/util/dict_dbm.h up to 1.2 external/ibm-public/postfix/dist/src/util/dict_fail.c up to 1.2 external/ibm-public/postfix/dist/src/util/dict_fail.h up to 1.2 external/ibm-public/postfix/dist/src/util/dict_inline.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_lmdb.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_lmdb.h up to 1.3 external/ibm-public/postfix/dist/src/util/dict_open.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_pcre.c up to 1.5 external/ibm-public/postfix/dist/src/util/dict_pcre.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/dict_pcre.map up to 1.1.1.3 external/ibm-public/postfix/dist/src/util/dict_pcre.ref up to 1.1.1.4 external/ibm-public/postfix/dist/src/util/dict_random.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_random.h up to 1.3 external/ibm-public/postfix/dist/src/util/dict_regexp.c up to 1.5 external/ibm-public/postfix/dist/src/util/dict_regexp.map up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/dict_regexp.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/util/dict_sdbm.h up to 1.2 external/ibm-public/postfix/dist/src/util/dict_static.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_thash.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_thash.map up to 1.1.1.3 external/ibm-public/postfix/dist/src/util/dict_union.c up to 1.3 external/ibm-public/postfix/dist/src/util/dict_utf8.c up to 1.3 external/ibm-public/postfix/dist/src/util/dict_utf8_test.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/dup2_pass_on_exec.c up to 1.2 external/ibm-public/postfix/dist/src/util/edit_file.c up to 1.4 external/ibm-public/postfix/dist/src/util/edit_file.h up to 1.3 external/ibm-public/postfix/dist/src/util/extpar.c up to 1.4 external/ibm-public/postfix/dist/src/util/find_inet.c up to 1.3 external/ibm-public/postfix/dist/src/util/gccw.c up to 1.2 external/ibm-public/postfix/dist/src/util/hex_code.c up to 1.3 external/ibm-public/postfix/dist/src/util/hex_code.h up to 1.4 external/ibm-public/postfix/dist/src/util/hex_quote.c up to 1.2 external/ibm-public/postfix/dist/src/util/host_port.h up to 1.3 external/ibm-public/postfix/dist/src/util/htable.c up to 1.4 external/ibm-public/postfix/dist/src/util/inet_addr_host.c up to 1.3 external/ibm-public/postfix/dist/src/util/inet_addr_list.in up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/inet_addr_list.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/inet_connect.c up to 1.3 external/ibm-public/postfix/dist/src/util/inet_listen.c up to 1.3 external/ibm-public/postfix/dist/src/util/inet_proto.c up to 1.4 external/ibm-public/postfix/dist/src/util/inet_proto.h up to 1.2 external/ibm-public/postfix/dist/src/util/killme_after.c up to 1.2 external/ibm-public/postfix/dist/src/util/listen.h up to 1.3 external/ibm-public/postfix/dist/src/util/load_lib.c up to 1.3 external/ibm-public/postfix/dist/src/util/lstat_as.h up to 1.3 external/ibm-public/postfix/dist/src/util/mac_expand.c up to 1.4 external/ibm-public/postfix/dist/src/util/mac_expand.h up to 1.4 external/ibm-public/postfix/dist/src/util/mac_expand.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/util/mac_expand.ref up to 1.1.1.4 external/ibm-public/postfix/dist/src/util/mac_parse.h up to 1.3 external/ibm-public/postfix/dist/src/util/make_dirs.c up to 1.2 external/ibm-public/postfix/dist/src/util/match_list.c up to 1.3 external/ibm-public/postfix/dist/src/util/match_ops.c up to 1.3 external/ibm-public/postfix/dist/src/util/midna_domain.c up to 1.4 external/ibm-public/postfix/dist/src/util/midna_domain.h up to 1.4 external/ibm-public/postfix/dist/src/util/midna_domain_test.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/msg_output.c up to 1.4 external/ibm-public/postfix/dist/src/util/msg_output.h up to 1.3 external/ibm-public/postfix/dist/src/util/msg_syslog.c up to 1.2 external/ibm-public/postfix/dist/src/util/msg_syslog.h up to 1.3 external/ibm-public/postfix/dist/src/util/mvect.c up to 1.3 external/ibm-public/postfix/dist/src/util/myaddrinfo.c up to 1.3 external/ibm-public/postfix/dist/src/util/myaddrinfo.h up to 1.3 external/ibm-public/postfix/dist/src/util/myaddrinfo.ref up to 1.1.1.5 external/ibm-public/postfix/dist/src/util/myaddrinfo4.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/myflock.c up to 1.3 external/ibm-public/postfix/dist/src/util/myflock.h up to 1.3 external/ibm-public/postfix/dist/src/util/mymalloc.c up to 1.4 external/ibm-public/postfix/dist/src/util/mymalloc.h up to 1.4 external/ibm-public/postfix/dist/src/util/mystrtok.c up to 1.4 external/ibm-public/postfix/dist/src/util/name_mask.c up to 1.3 external/ibm-public/postfix/dist/src/util/nbbio.c up to 1.3 external/ibm-public/postfix/dist/src/util/netstring.c up to 1.3 external/ibm-public/postfix/dist/src/util/peekfd.c up to 1.3 external/ibm-public/postfix/dist/src/util/printable.c up to 1.3 external/ibm-public/postfix/dist/src/util/recv_pass_attr.c up to 1.3 external/ibm-public/postfix/dist/src/util/sane_fsops.h up to 1.3 external/ibm-public/postfix/dist/src/util/sane_link.c up to 1.2 external/ibm-public/postfix/dist/src/util/sane_rename.c up to 1.2 external/ibm-public/postfix/dist/src/util/sane_socketpair.h up to 1.3 external/ibm-public/postfix/dist/src/util/slmdb.c up to 1.4 external/ibm-public/postfix/dist/src/util/sock_addr.c up to 1.3 external/ibm-public/postfix/dist/src/util/sock_addr.h up to 1.2 external/ibm-public/postfix/dist/src/util/split_nameval.c up to 1.2 external/ibm-public/postfix/dist/src/util/stat_as.h up to 1.3 external/ibm-public/postfix/dist/src/util/stringops.h up to 1.5 external/ibm-public/postfix/dist/src/util/sys_compat.c up to 1.3 external/ibm-public/postfix/dist/src/util/sys_defs.h up to 1.14 external/ibm-public/postfix/dist/src/util/timed_wait.h up to 1.3 external/ibm-public/postfix/dist/src/util/unix_pass_fd_fix.c up to 1.2 external/ibm-public/postfix/dist/src/util/unix_send_fd.c up to 1.8 external/ibm-public/postfix/dist/src/util/unsafe.c up to 1.2 external/ibm-public/postfix/dist/src/util/valid_hostname.c up to 1.3 external/ibm-public/postfix/dist/src/util/valid_hostname.h up to 1.2 external/ibm-public/postfix/dist/src/util/vbuf.c up to 1.3 external/ibm-public/postfix/dist/src/util/vbuf_print.c up to 1.4 external/ibm-public/postfix/dist/src/util/vstream.c up to 1.4 external/ibm-public/postfix/dist/src/util/vstream.h up to 1.4 external/ibm-public/postfix/dist/src/util/vstream_tweak.c up to 1.3 external/ibm-public/postfix/dist/src/util/vstring.c up to 1.4 external/ibm-public/postfix/dist/src/util/vstring.h up to 1.4 external/ibm-public/postfix/dist/src/util/vstring_vstream.c up to 1.2 external/ibm-public/postfix/dist/src/util/vstring_vstream.h up to 1.3 external/ibm-public/postfix/dist/src/util/watchdog.c up to 1.3 external/ibm-public/postfix/dist/src/verify/Makefile.in up to 1.1.1.6 external/ibm-public/postfix/dist/src/verify/verify.c up to 1.4 external/ibm-public/postfix/dist/src/virtual/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/virtual/mailbox.c up to 1.3 external/ibm-public/postfix/dist/src/virtual/virtual.c up to 1.4 external/ibm-public/postfix/dist/src/xsasl/Makefile.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/xsasl/xsasl.h up to 1.3 external/ibm-public/postfix/dist/src/xsasl/xsasl_cyrus_client.c up to 1.3 external/ibm-public/postfix/dist/src/xsasl/xsasl_cyrus_server.c up to 1.4 external/ibm-public/postfix/dist/src/xsasl/xsasl_dovecot_server.c up to 1.4 external/ibm-public/postfix/dist/src/xsasl/xsasl_saslc_client.c up to 1.2 external/ibm-public/postfix/dist/src/xsasl/xsasl_server.c up to 1.2 external/ibm-public/postfix/lib/dns/Makefile up to 1.4 external/ibm-public/postfix/lib/global/Makefile up to 1.10 external/ibm-public/postfix/lib/masterlib/Makefile up to 1.3 external/ibm-public/postfix/lib/milter/Makefile up to 1.2 external/ibm-public/postfix/lib/tls/Makefile up to 1.4 external/ibm-public/postfix/lib/util/Makefile up to 1.11 external/ibm-public/postfix/lib/xsasl/Makefile up to 1.3 external/ibm-public/postfix/libexec/smtp/Makefile up to 1.4 external/ibm-public/postfix/libexec/smtpd/Makefile up to 1.9 (+patch) external/ibm-public/postfix/libexec/tlsproxy/Makefile up to 1.2 external/ibm-public/postfix/sbin/postconf/Makefile up to 1.9 doc/3RDPARTY (apply patch) Update Postfix to 3.8.4. @ text @d10 1 a10 2 d496 2 a497 2 parameter (default: Postfix ≥ 3.0: no, Postfix < 3.0: yes). The purpose is to get consistent treatment of different forms of the same hostname.

d1055 1 a1055 1

With delivery via the local(8) delivery agent, users can control @ 1.1.1.3.24.1 log @Merge changes from current as of 20200406 @ text @d1055 1 a1055 1

With delivery via the local(8) delivery agent, users can control @ 1.1.1.4 log @This is the Postfix 3.5 (stable) release. The stable Postfix release is called postfix-3.5.x where 3=major release number, 5=minor release number, x=patchlevel. The stable release never changes except for patches that address bugs or emergencies. Patches change the patchlevel and the release date. New features are developed in snapshot releases. These are called postfix-3.6-yyyymmdd where yyyymmdd is the release date (yyyy=year, mm=month, dd=day). Patches are never issued for snapshot releases; instead, a new snapshot is released. The mail_release_date configuration parameter (format: yyyymmdd) specifies the release date of a stable release or snapshot release. If you upgrade from Postfix 3.3 or earlier, read RELEASE_NOTES-3.4 before proceeding. License change --------------- This software is distributed with a dual license: in addition to the historical IBM Public License 1.0, it is now also distributed with the more recent Eclipse Public License 2.0. Recipients can choose to take the software under the license of their choice. Those who are more comfortable with the IPL can continue with that license. Major changes - multiple relayhost in SMTP ------------------------------------------ [Feature 20200111] the Postfix SMTP and LMTP client support a list of nexthop destinations separated by comma or whitespace. These destinations will be tried in the specified order. The list form can be specified in relayhost, transport_maps, default_transport, and sender_dependent_default_transport_maps. Examples: /etc/postfix/main.cf: relayhost = foo.example, bar.example default_transport = smtp:foo.example, bar.example. NOTE: this is an SMTP and LMTP client feature. It does not work for other Postfix delivery agents. Major changes - certificate access ---------------------------------- [Feature 20190517] Search order support for check_ccert_access. Search order support for other tables is in design (canonical_maps, virtual_alias_maps, transport_maps, etc.). The following check_ccert_access setting uses the built-in search order: it first looks up the client certificate fingerprint, then the client certificate public-key fingerprint, and it stops when a decision is made. /etc/postfix/main.cf: smtpd_mumble_restrictions = ... check_ccert_access hash:/etc/postfix/ccert-access ... The following setting, with explicit search order, produces the exact same result: /etc/postfix/main.cf: smtpd_mumble_restrictions = ... check_ccert_access { hash:/etc/postfix/ccert-access { search_order = cert_fingerprint, pubkey_fingerprint } } ... Support is planned for other certificate features. Major changes - dovecot usability --------------------------------- [Feature 20190615] The SMTP+LMTP delivery agent can now prepend Delivered-To, X-Original-To and Return-Path headers, just like the pipe(8) and local(8) delivery agents. This uses the "flags=DORX" command-line flags in master.cf. See the smtp(8) manpage for details. This obsoletes the "lmtp_assume_final = yes" setting, and replaces it with "flags=...X...", for consistency with the pipe(8) delivery agent. Major changes - forced expiration --------------------------------- [Feature 20200202] Support to force-expire email messages. This introduces new postsuper(1) command-line options to request expiration, and additional information in mailq(1) or postqueue(1) output. The forced-to-expire status is stored in a queue file attribute. An expired message is returned to the sender when the queue manager attempts to deliver that message (note that Postfix will never deliver messages in the hold queue). The postsuper(1) -e and -f options both set the forced-to-expire queue file attribute. The difference is that -f will also release a message if it is in the hold queue. With -e, such a message would not be returned to the sender until it is released with -f or -H. In the mailq(1) or postqueue(1) -p output, a forced-to-expire message is indicated with # after the queue file name. In postqueue(1) JSON output, there is a new per-message field "forced_expire" (with value true or false) that shows the forced-to-expire status. Major changes - haproxy2 protocol --------------------------------- [Feature 20200112] Support for the haproxy v2 protocol. The Postfix implementation supports TCP over IPv4 and IPv6, as well as non-proxied connections; the latter are typically used for heartbeat tests. The haproxy v2 protocol introduces no additional Postfix configuration. The Postfix smtpd(8) and postscreen(8) daemons accept both v1 and v2 protocol versions. Major changes - logging ----------------------- [Incompat 20191109] Postfix daemon processes now log the from= and to= addresses in external (quoted) form in non-debug logging (info, warning, etc.). This means that when an address localpart contains spaces or other special characters, the localpart will be quoted, for example: from=<"name with spaces"@@example.com> Older Postfix versions would log the internal (unquoted) form: from= The external and internal forms are identical for the vast majority of email addresses that contain no spaces or other special characters in the localpart. Specify "info_log_address_format = internal" for backwards compatibility. The logging in external form is consistent with the address form that Postfix 3.2 and later prefer for table lookups. It is therefore the more useful form for non-debug logging. Major changes - IP address normalization ---------------------------------------- [Incompat 20190427] Postfix now normalizes IP addresses received with XCLIENT, XFORWARD, or with the HaProxy protocol, for consistency with direct connections to Postfix. This may change the appearance of logging, and the way that check_client_access will match subnets of an IPv6 address. This is the Postfix 3.4 (stable) release. The stable Postfix release is called postfix-3.4.x where 3=major release number, 4=minor release number, x=patchlevel. The stable release never changes except for patches that address bugs or emergencies. Patches change the patchlevel and the release date. New features are developed in snapshot releases. These are called postfix-3.5-yyyymmdd where yyyymmdd is the release date (yyyy=year, mm=month, dd=day). Patches are never issued for snapshot releases; instead, a new snapshot is released. The mail_release_date configuration parameter (format: yyyymmdd) specifies the release date of a stable release or snapshot release. If you upgrade from Postfix 3.2 or earlier, read RELEASE_NOTES-3.3 before proceeding. License change --------------- This software is distributed with a dual license: in addition to the historical IBM Public License 1.0, it is now also distributed with the more recent Eclipse Public License 2.0. Recipients can choose to take the software under the license of their choice. Those who are more comfortable with the IPL can continue with that license. Summary of changes ------------------ Incompatible changes, bdat support, containers, database support, logging, safety, tls connection pooling, tls support, usability, Incompatible changes -------------------- [Incompat 20180826] The Postfix SMTP server announces CHUNKING (BDAT command) by default. In the unlikely case that this breaks some important remote SMTP client, disable the feature as follows: /etc/postfix/main.cf: # The logging alternative: smtpd_discard_ehlo_keywords = chunking # The non-logging alternative: smtpd_discard_ehlo_keywords = chunking, silent_discard See BDAT_README for more. [Incompat 20190126] This introduces a new master.cf service 'postlog' with type 'unix-dgram' that is used by the new postlogd(8) daemon. Before backing out to an older Postfix version, edit the master.cf file and remove the postlog entry. [Incompat 20190106] Postfix 3.4 drops support for OpenSSL 1.0.1 (end-of-life was December 31, 2016) and all earlier releases. [Incompat 20180701] To avoid performance loss under load, the tlsproxy(8) daemon now requires a zero process limit in master.cf (this setting is provided with the default master.cf file). By default, a tlsproxy(8) process will retire after several hours. To set the tlsproxy process limit to zero: # postconf -F tlsproxy/unix/process_limit=0 # postfix reload Major changes - bdat support -------------------- [Feature 20180826] Postfix SMTP server support for RFC 3030 CHUNKING (the BDAT command) without BINARYMIME, in both smtpd(8) and postscreen(8). This has no effect on Milters, smtpd_mumble_restrictions, and smtpd_proxy_filter. See BDAT_README for more. Major changes - containers -------------------------- [Feature 20190126] Support for logging to file or stdout, instead of using syslog. - Logging to file solves a usability problem for MacOS, and eliminates multiple problems with systemd-based systems. - Logging to stdout is useful when Postfix runs in a container, as it eliminates a syslogd dependency. See MAILLOG_README for configuration examples and logfile rotation. [Feature 20180422] Better handling of undocumented(!) Linux behavior whether or not signals are delivered to a PID=1 process. Major changes - database support -------------------------------- [Feature 20181105] Support for (key, list of filenames) in map source text. - Currently, this feature is used only by tls_server_sni_maps. - When a map is created from source with "postmap -F maptype:mapname", the command processes each key as usual and processes each value as a list of filenames, concatenates the content of those files (with one newline character in-between files), and stores an entry with (key, base64-encoded result). - When a map is queried with "postmap -F -q ...", the command base64-decodes each value. It reports an error when a value is not in base64 form. This "postmap -F -q ..." behavior also works when querying the memory-resident map types cidr:, inline:, pcre:, randmap:, regexp:, and static:. Postfix reads the files specified as table values, stores base64-encoded content, and base64-decodes content upon table lookup. Internally, Postfix will turn on this behavior for lookups (not updates) when a map is opened with the DICT_FLAG_RHS_IS_FILE flag. Major changes - logging ----------------------- [Feature 20190126] Support for logging to file or stdout, instead of using syslog. - Logging to file solves a usability problem for MacOS, and eliminates multiple problems with systemd-based systems. - Logging to stdout is useful when Postfix runs in a container, as it eliminates a syslogd dependency. See MAILLOG_README for configuration examples and logfile rotation. Major changes - safety ---------------------- [Feature 20180623] Automatic retirement: dnsblog(8) and tlsproxy(8) process will now voluntarily retire after after max_idle*max_use, or some sane limit if either limit is disabled. Without this, a process could stay busy for days or more. Major changes - tls connection pooling -------------------------------------- [Feature 20180617] Postfix SMTP client support for multiple deliveries per TLS-encrypted connection. This is primarily to improve mail delivery performance for destinations that throttle clients when they don't combine deliveries. This feature is enabled with "smtp_tls_connection_reuse=yes" in main.cf, or with "tls_connection_reuse=yes" in smtp_tls_policy_maps. It supports all Postfix TLS security levels including dane and dane-only. The implementation of TLS connection reuse relies on the same scache(8) service as used for delivering plaintext SMTP mail, the same tlsproxy(8) daemon as used by the postscreen(8) service for inbound connections, and relies on the same hints from the qmgr(8) daemon. It reuses the configuration parameters described in CONNECTION_CACHE_README. The Postfix SMTP client now logs whether an SMTP-over-TLS connection is newly established ("TLS connection established") or whether the connection is reused ("TLS connection reused"). The following illustrates how TLS connections are reused: Initial plaintext SMTP handshake: smtp(8) -> remote SMTP server Reused SMTP/TLS connection, or new SMTP/TLS connection: smtp(8) -> tlsproxy(8) -> remote SMTP server Cached SMTP/TLS connection: scache(8) -> tlsproxy(8) -> remote SMTP server Major changes - tls support --------------------------- [Feature 20190106] SNI support in the Postfix SMTP server, the Postfix SMTP client, and in the tlsproxy(8) daemon (both server and client roles). See the postconf(5) documentation for the new tls_server_sni_maps and smtp_tls_servername parameters. [Feature 20190106] Support for files that contain multiple (key, certificate, trust chain) instances. This was required to implement server-side SNI table lookups, but it also eliminates the need for separate cert/key files for RSA, DSA, Elliptic Curve, and so on. The file format is documented in the TLS_README sections "Server-side certificate and private key configuration" and "Client-side certificate and private key configuration", and in the postconf(5) documentation for the parameters smtp_tls_chain_files, smtpd_tls_chain_files, tlsproxy_client_chain_files, and tlsproxy_tls_chain_files. Note: the command "postfix tls" does not yet support the new consolidated certificate chain format. If you switch to the new format, you'll need to manage your keys and certificates directly, rather than via postfix-tls(1). Major changes - usability ------------------------- [Feature 20180812] Support for smtpd_reject_footer_maps (as well as the postscreen variant postscreen_reject_footer_maps) for more informative reject messages. This is indexed with the Postfix SMTP server response text, and overrides the footer specified with smtpd_reject_footer. One will want to use a pcre: or regexp: map with this. This is the Postfix 3.3 (stable) release. The stable Postfix release is called postfix-3.3.x where 3=major release number, 3=minor release number, x=patchlevel. The stable release never changes except for patches that address bugs or emergencies. Patches change the patchlevel and the release date. New features are developed in snapshot releases. These are called postfix-3.4-yyyymmdd where yyyymmdd is the release date (yyyy=year, mm=month, dd=day). Patches are never issued for snapshot releases; instead, a new snapshot is released. The mail_release_date configuration parameter (format: yyyymmdd) specifies the release date of a stable release or snapshot release. If you upgrade from Postfix 3.1 or earlier, read RELEASE_NOTES-3.2 before proceeding. License change --------------- This software is distributed with a dual license: in addition to the historical IBM Public License 1.0, it is now also distributed with the more recent Eclipse Public License 2.0. Recipients can choose to take the software under the license of their choice. Those who are more comfortable with the IPL can continue with that license. Major changes - compatibility safety net ---------------------------------------- [20180106] With compatibility_level < 1, the Postfix SMTP server now warns for mail that would be blocked by the Postfix 2.10 smtpd_relay_restrictions feature, without blocking that mail. This extends the compatibility safety net for sites that upgrade from earlier Postfix versions (questions on the postfix-users list show there is a steady trickle). See COMPATIBILITY_README for details. Major changes - configuration ----------------------------- [20170617] The postconf command now warns about unknown parameter names in a Postfix database configuration file. As with other unknown parameter names, these warnings can help to find typos early. [20180113] New read-only service_name parameter that contains the master.cf service name of a Postfix daemon process (it that is empty in a non-daemon process). This can make Postfix SMTP server logging logging distinct by setting the syslog_name in master.cf with "-o syslog_name=postfix/$service_name" for the "submission" and "smtps" services, and can make Postfix SMTP client distinct by setting "-o syslog_name=postfix/$service_name" for the "relay" service. Major changes - container support --------------------------------- [20171218] Preliminary support to run Postfix in the foreground, with "postfix start-fg". This requires that Postfix multi-instance support is disabled. To receive Postfix syslog information on the container's host, mount the host's /dev/log socket inside the container (example: "docker run -v /dev/log:/dev/log ..."), and specify a distinct Postfix "syslog_name" prefix that identifies the logging from the Postfix instance. Postfix does not log systemd events. Major changes - database support --------------------------------- [20170617] The postconf command warns about unknown parameter names in a Postfix database configuration file. [20171227] The pgsql_table(5) hosts parameter now supports the postgresql:// URI syntax. Contributed by Magosányi Árpád. Major changes - header format ----------------------------- [20180010] This release changes the format of 'full name' information in Postfix-generated From: headers, when a local program such as /bin/mail submits a message without From: header. Postfix-generated From: headers with 'full name' information are now formatted as "From: name

" by default. Specify "header_from_format = obsolete" to get the earlier form "From: address (name)". See the postconf(5) manpage for more details. Major changes - invisible changes --------------------------------- [20170617] Additional paranoia in the VSTRING implementation: a null byte after the end of vstring buffers (this is a safety net so that C-style string operations won't scribble past the end); earlier detection of bad length and precision format string specifiers (these are the result of programming error, as Postfix format strings cannot be specified externally). Major changes - milter support ------------------------------ [20171223] Milter applications can now send RET and ENVID parameters in SMFIR_CHGFROM (change envelope sender) requests. Major changes - mixed IPv6/IPv4 support --------------------------------------- [20170505] Workaround for mail delivery problems when 1) both Postfix IPv6 and IPv4 support are enabled, 2) some destination announces more primary IPv6 MX addresses than primary IPv4 MX addresses, 3) the destination is unreachable over IPv6, and 4) Postfix runs into the smtp_mx_address_limit before it can try to deliver over IPv4. When both Postfix IPv6 and IPv4 support are enabled, the Postfix SMTP client will now relax MX preferences so that it can schedule similar numbers of IPv4 and IPv6 destination addresses. This ensures that an IPv6 connectivity problem will not prevent mail from being delivered over IPv4 (and vice versa). Specify "smtp_balance_inet_protocols = no" to disable this workaround. Major changes - xclient ----------------------- [20171218] The Postfix SMTP server now allows the XCLIENT command before STARTTLS when TLS is required. This is useful for servers that run behind a reverse proxy server such as nginx. This is the Postfix 3.2 (stable) release. The stable Postfix release is called postfix-3.2.x where 3=major release number, 2=minor release number, x=patchlevel. The stable release never changes except for patches that address bugs or emergencies. Patches change the patchlevel and the release date. New features are developed in snapshot releases. These are called postfix-3.3-yyyymmdd where yyyymmdd is the release date (yyyy=year, mm=month, dd=day). Patches are never issued for snapshot releases; instead, a new snapshot is released. The mail_release_date configuration parameter (format: yyyymmdd) specifies the release date of a stable release or snapshot release. If you upgrade from Postfix 3.0 or earlier, read RELEASE_NOTES-3.1 before proceeding. Invisible changes ----------------- In addition to the visible changes described below, there is an ongoing overhaul of low-level code. With each change come updated tests to ensure that future changes will not 'break' compatibility with past behavior. Major changes - address mapping ------------------------------- [Feature 20170128] Postfix 3.2 fixes the handling of address extensions with email addresses that contain spaces. For example, the virtual_alias_maps, canonical_maps, and smtp_generic_maps features now correctly propagate an address extension from "aa bb+ext"@@example.com to "cc dd+ext"@@other.example, instead of producing broken output. Major changes - header/body_checks ---------------------------------- [Feature 20161008] "PASS" and "STRIP" actions in header/body_checks. "STRIP" is similar to "IGNORE" but also logs the action, and "PASS" disables header, body, and Milter inspection for the remainder of the message content. Contributed by Hobbit. Major changes - log analysis ---------------------------- [Feature 20160330] The collate.pl script by Viktor Dukhovni for grouping Postfix logfile records into "sessions" based on queue ID and process ID information. It's in the auxiliary/collate directory of the Postfix source tree. Major changes - maps support ---------------------------- [Feature 20160527] Postfix 3.2 cidr tables support if/endif and negation (by prepending ! to a pattern), just like regexp and pcre tables. The primarily purpose is to improve readability of complex tables. See the cidr_table(5) manpage for syntax details. [Incompat 20160925] In the Postfix MySQL database client, the default option_group value has changed to "client", to enable reading of "client" option group settings in the MySQL options file. This fixes a "not found" problem with Postfix queries that contain UTF8-encoded non-ASCII text. Specify an empty option_group value (option_group =) to get backwards-compatible behavior. [Feature 20161217] Stored-procedure support for MySQL databases. Contributed by John Fawcett. See mysql_table(5) for instructions. [Feature 20170128] The postmap command, and the inline: and texthash: maps now support spaces in left-hand field of the lookup table "source text". Use double quotes (") around a left-hand field that contains spaces, and use backslash (\) to protect embedded quotes in a left-hand field. There is no change in the processing of the right-hand field. Major changes - milter support ------------------------------ [Feature 20160611] The Postfix SMTP server local IP address and port are available in the policy delegation protocol (attribute names: server_address, server_port), in the Milter protocol (macro names: {daemon_addr}, {daemon_port}), and in the XCLIENT protocol (attribute names: DESTADDR, DESTPORT). [Feature 20161024] smtpd_milter_maps support for per-client Milter configuration that overrides smtpd_milters, and that has the same syntax. A lookup result of "DISABLE" turns off Milter support. See MILTER_README.html for details. Major changes - policy delegation --------------------------------- [Feature 20160611] The Postfix SMTP server local IP address and port are available in the policy delegation protocol (attribute names: server_address, server_port), in the Milter protocol (macro names: {daemon_addr}, {daemon_port}), and in the XCLIENT protocol (attribute names: DESTADDR, DESTPORT). Major changes - postqueue ------------------------- [Incompat 20170129] The postqueue command no longer forces all message arrival times to be reported in UTC. To get the old behavior, set TZ=UTC in main.cf:import_environment (this override is not recommended, as it affects all Postfix utities and daemons). Major changes - safety ---------------------- [Incompat 20161227] For safety reasons, the sendmail -C option must specify an authorized directory: the default configuration directory, a directory that is listed in the default main.cf file with alternate_config_directories or multi_instance_directories, or the command must be invoked with root privileges (UID 0 and EUID 0). This mitigates a recurring problem with the PHP mail() function. Major changes - sasl -------------------- [Feature 20160625] The Postfix SMTP server now passes remote client and local server network address and port information to the Cyrus SASL library. Build with ``make makefiles "CCARGS=$CCARGS -DNO_IP_CYRUS_SASL_AUTH"'' for backwards compatibility. Major changes - smtputf8 ------------------------ [Feature 20161103] Postfix 3.2 disables the 'transitional' compatibility between the IDNA2003 and IDNA2008 standards for internationalized domain names (domain names beyond the limits of US-ASCII). This change makes Postfix behavior consistent with contemporary web browsers. It affects the handling of some corner cases such as German sz and Greek zeta. See http://unicode.org/cldr/utility/idna.jsp for more examples. Specify "enable_idna2003_compatibility = yes" to restore historical behavior (but keep in mind that the rest of the world may not make that same choice). Major changes - tls ------------------- [Feature 20160828] Fixes for deprecated OpenSSL 1.1.0 API features, so that Postfix will build without depending on backwards-compatibility support. [Incompat 20161204] Postfix 3.2 removes tentative features that were implemented before the DANE spec was finalized: - Support for certificate usage PKIX-EE(1), - The ability to disable digest agility (Postfix now behaves as if "tls_dane_digest_agility = on"), and - The ability to disable support for "TLSA 2 [01] [12]" records that specify the digest of a trust anchor (Postfix now behaves as if "tls_dane_trust_anchor_digest_enable = yes). [Feature 20161217] Postfix 3.2 enables elliptic curve negotiation with OpenSSL >= 1.0.2. This changes the default smtpd_tls_eecdh_grade setting to "auto", and introduces a new parameter tls_eecdh_auto_curves with the names of curves that may be negotiated. The default tls_eecdh_auto_curves setting is determined at compile time, and depends on the Postfix and OpenSSL versions. At runtime, Postfix will skip curve names that aren't supported by the OpenSSL library. Major changes - xclient ----------------------- [Feature 20160611] The Postfix SMTP server local IP address and port are available in the policy delegation protocol (attribute names: server_address, server_port), in the Milter protocol (macro names: {daemon_addr}, {daemon_port}), and in the XCLIENT protocol (attribute names: DESTADDR, DESTPORT). @ text @d1055 1 a1055 1

With delivery via the local(8) delivery agent, users can control @ 1.1.1.5 log @Import Postfix-3.7.3 (previous version was 3.5.2) This is the Postfix 3.7 (stable) release. The stable Postfix release is called postfix-3.7.x where 3=major release number, 7=minor release number, x=patchlevel. The stable release never changes except for patches that address bugs or emergencies. Patches change the patchlevel and the release date. New features are developed in snapshot releases. These are called postfix-3.8-yyyymmdd where yyyymmdd is the release date (yyyy=year, mm=month, dd=day). Patches are never issued for snapshot releases; instead, a new snapshot is released. The mail_release_date configuration parameter (format: yyyymmdd) specifies the release date of a stable release or snapshot release. If you upgrade from Postfix 3.5 or earlier, read RELEASE_NOTES-3.6 before proceeding. License change --------------- This software is distributed with a dual license: in addition to the historical IBM Public License 1.0, it is now also distributed with the more recent Eclipse Public License 2.0. Recipients can choose to take the software under the license of their choice. Those who are more comfortable with the IPL can continue with that license. Bugfix for messages not delivered after "warning: Unexpected record type 'X' ============================================================================ Due to a bug introduced in Postfix 3.7.0, a message could falsely be flagged as corrupt with "warning: Unexpected record type 'X'". Such messages were moved to the "corrupt" queue directory, where they may still be found. See below for instructions to deal with these falsely flagged messages. This could happen for messages with 5000 or more recipients, or with fewer recipients on a busy mail server. The problem was first reported by Frank Brendel, reproduced by John Alex. A file in the "corrupt" queue directory may be inspected with the command "postcat /var/spool/postfix/corrupt/. If delivery of the file is still desired, the file can be moved back to /var/spool/postfix/incoming after updating Postfix and executing "postfix reload". Major changes - configuration ----------------------------- [Feature 20210605] Support to inline the content of small cidr:, pcre:, and regexp: tables in Postfix parameter values. Example: smtpd_forbidden_commands = CONNECT GET POST regexp:{{/^[^A-Z]/ Thrash}} This is the new smtpd_forbidden_commands default value. It will immediately disconnect a remote SMTP client when a command does not start with a letter (a-z or A-Z). The basic syntax is: /etc/postfix/main.cf: parameter = .. map-type:{ { rule-1 }, { rule-2 } .. } .. /etc/postfix/master.cf: .. -o { parameter = .. map-type:{ { rule-1 }, { rule-2 } .. } .. } .. where map-type is one of cidr, pcre, or regexp. Postfix ignores whitespace after '{' and before '}', and writes each rule as one text line to a nameless in-memory file: in-memory file: rule-1 rule-2 .. Postfix parses the result as if it is a file in /etc/postfix. Note: if a rule contains $, specify $$ to keep Postfix from trying to do $name expansion as it evaluates the parameter value. Major changes - lmdb support ---------------------------- [Feature 20210605] Overhauled the LMDB client's error handling, and added integration tests for future-proofing. There are no visible changes in documented behavior. Major changes - logging ----------------------- [Feature 20210815] To make the maillog_file feature more useful, the postlog(1) command is now set-gid postdrop, so that unprivileged programs can use it to write logging through the postlogd(8) daemon. This required hardening the postlog(1) command against privilege escalation attacks. DO NOT turn on the set-gid bit with older postlog(1) implementations. Major changes - pcre2 support ----------------------------- [Feature 20211127] Support for the pcre2 library (the legacy pcre library is no longer maintained). The Postfix build procedure automatically detects if the pcre2 library is installed, and if it is unavailable, the Postfix build procedure will detect if the legacy pcre library is installed. See PCRE_README if you need to build Postfix with a specific library. Visible differences: some error messages may have a different text, and the 'X' pattern flag is no longer supported with pcre2. Major changes - security ------------------------ [Feature 20220102] Postfix programs now randomize the initial state of in-memory hash tables, to defend against hash collision attacks involving a large number of attacker-chosen lookup keys. Presently, the only known opportunity for such attacks involves remote SMTP client IPv6 addresses in the anvil(8) service. The attack would require making hundreds of short-lived connections per second from thousands of different IP addresses, because the anvil(8) service drops inactive counters after 100s. Other in-memory hash tables with attacker-chosen lookup keys are by design limited in size. The fix is cheap, and therefore implemented for all Postfix in-memory hash tables. Problem reported by Pascal Junod. [Feature 20211030] The postqueue command now sanitizes non-printable characters (such as newlines) in strings before they are formatted as json or as legacy output. These outputs are piped into other programs that are run by administrative users. This closes a hypothetical opportunity for privilege escalation. [Feature 20210815] Updated defense against remote clients or servers that 'trickle' SMTP or LMTP traffic, based on per-request deadlines and minimum data rates. Per-request deadlines: The new {smtpd,smtp,lmtp}_per_request_deadline parameters replace {smtpd,smtp,lmtp}_per_record_deadline, with backwards compatible default settings. This defense is enabled by default in the Postfix SMTP server in case of overload. The new smtpd_per_record_deadline parameter limits the combined time for the Postfix SMTP server to receive a request and to send a response, while the new {smtp,lmtp}_per_record_deadline parameters limit the combined time for the Postfix SMTP or LMTP client to send a request and to receive a response. Minimum data rates: The new smtpd_min_data_rate parameter enforces a minimum plaintext data transfer rate for DATA and BDAT requests, but only when smtpd_per_record_deadline is enabled. After a read operation transfers N plaintext bytes (possibly after TLS decryption), and after the DATA or BDAT request deadline is decreased by the elapsed time of that read operation, the DATA or BDAT request deadline is increased by N/smtpd_min_data_rate seconds. However, the deadline is never increased beyond the smtpd_timeout value. The default minimum data rate is 500 (bytes/second) but is still subject to change. The new {smtp,lmtp}_min_data_rate parameters enforce the corresponding minimum DATA transfer rates for the Postfix SMTP and LMTP client. Major changes - tls support --------------------------- [Cleanup 20220121] The new tlsproxy_client_security_level parameter replaces tlsproxy_client_level, and the new tlsproxy_client_policy_maps parameter replaces tlsproxy_client_policy. This is for consistent parameter naming (tlsproxy_client_xxx corresponds to smtp_tls_xxx). This change was made with backwards-compatible default settings. [Feature 20210926] Postfix was updated to support OpenSSL 3.0.0 API features, and to work around OpenSSL 3.0.0 bit-rot (avoid using deprecated API features). Other code health ----------------- [typos] Typo fixes by raf. [pre-release checks] Added pre-release checks to detect a) new typos in documentation and source-code comments, b) missing entries in the postfix-files file (some documentation would not be installed), c) missing rules in the postlink script (some text would not have a hyperlink in documentation), and d) missing map-based $parameter names in the proxy_read_maps default value (the proxymap daemon would not automatically authorize some proxied maps). [memory stream] Improved support for memory-based streams made it possible to inline small cidr:, pcre:, and regexp: maps in Postfix parameter values, and to eliminate some ad-hoc code that converted tlsproxy(8) protocol data to or from serialized form. ************************************************************************* This is the Postfix 3.6 (stable) release. The stable Postfix release is called postfix-3.6.x where 3=major release number, 6=minor release number, x=patchlevel. The stable release never changes except for patches that address bugs or emergencies. Patches change the patchlevel and the release date. New features are developed in snapshot releases. These are called postfix-3.7-yyyymmdd where yyyymmdd is the release date (yyyy=year, mm=month, dd=day). Patches are never issued for snapshot releases; instead, a new snapshot is released. The mail_release_date configuration parameter (format: yyyymmdd) specifies the release date of a stable release or snapshot release. If you upgrade from Postfix 3.4 or earlier, read RELEASE_NOTES-3.5 before proceeding. License change --------------- This software is distributed with a dual license: in addition to the historical IBM Public License 1.0, it is now also distributed with the more recent Eclipse Public License 2.0. Recipients can choose to take the software under the license of their choice. Those who are more comfortable with the IPL can continue with that license. Major changes - internal protocol identification ------------------------------------------------ [Incompat 20200920] Internal protocols have changed. You need to "postfix stop" before updating, or before backing out to an earlier release, otherwise long-running daemons (pickup, qmgr, verify, tlsproxy, postscreen) may fail to communicate with the rest of Postfix, causing mail delivery delays until Postfix is restarted. This change does not affect message files in Postfix queue directories, only the communication between running Postfix programs. With this change, every Postfix internal service, including the postdrop command, announces the name of its protocol before doing any other I/O. Every Postfix client program, including the Postfix sendmail command, will verify that the protocol name matches what it is supposed to be. The purpose of this change is to produce better error messages, for example, when someone configures the discard daemon as a bounce service in master.cf, or vice versa. This change may break third-party programs that implement a Postfix-internal protocol such as qpsmtpd. Such programs have never been supported. Fortunately, this will be an easy fix: look at the first data from the cleanup daemon: if it is a protocol announcement, you're talking to Postfix 3.6 or later. That's the only real change. Major changes - tls ------------------- [Incompat 20200705] The minimum supported OpenSSL version is 1.1.1, which will reach the end of life by 2023-09-11. Postfix 3.6 is expected to reach the end of support in 2025. Until then, Postfix will be updated as needed for compatibility with OpenSSL. The default fingerprint digest has changed from md5 to sha256 (Postfix 3.6 with compatibility_level >= 3.6). With a lower compatibility_level setting, Postfix defaults to using md5, and logs a warning when a Postfix configuration specifies no explicit digest type. Export-grade Diffie-Hellman key exchange is no longer supported, and the tlsproxy_tls_dh512_param_file parameter is ignored, [Feature 20200906] The tlstype.pl helper script by Viktor Dukhovni reports TLS information per message delivery. This processes output from the collate.pl script. See auxiliary/collate/README.tlstype and auxiliary/collate/tlstype.pl. Major changes - compatibility level ----------------------------------- [Feature 20210109] Starting with Postfix version 3.6, the compatibility level is "3.6". In future Postfix releases, the compatibility level will be the Postfix version that introduced the last incompatible change. The level is formatted as 'major.minor.patch', where 'patch' is usually omitted and defaults to zero. Earlier compatibility levels are 0, 1 and 2. This also introduces main.cf and master.cf support for the <=level, " which matches an empty sender address, and the "@@domain" wildcard pattern. More information about those can be found in the postconf(5) manpage. Example: /etc/postfix/main.cf: # Allow root and postfix full control, anyone else can only # send mail as themselves. Use "uid:" followed by the numerical # UID when the UID has no entry in the UNIX password file. local_login_sender_maps = inline:{ { root = *}, { postfix = * } }, pcre:/etc/postfix/login_senders /etc/postfix/login_senders: # Allow both the bare username and the user@@domain forms. /(.+)/ $1 $1@@example.com Major changes - order of relay and recipient restrictions --------------------------------------------------------- [Incompat 20210131] With smtpd_relay_before_recipient_restrictions=yes, the Postfix SMTP server will evaluate smtpd_relay_restrictions before smtpd_recipient_restrictions. This is the default behavior with compatibility_level >= 3.6. This change makes the implemented behavior consistent with existing documentation. There is a backwards-compatibility warning that allows users to freeze historical behavior. See COMPATIBILITY_README for details. Major changes - respectful logging ---------------------------------- [Feature 20210220] Postfix version 3.6 deprecates terminology that implies white is better than black. Instead, Postfix prefers 'allowlist', 'denylist', and variations on those words. This change affects Postfix documentation, and postscreen parameters and logging. To keep the old postscreen logging set "respectful_logging = no" in main.cf. Noel Jones assisted with the initial transition. Changes in documentation ------------------------ Postfix documentation was updated to use 'allowlist', 'denylist', etc. These documentation changes do not affect Postfix behavior. Changes in parameter names -------------------------- The following postscreen parameters replace names that contain 'blacklist' or 'whitelist': postscreen_allowlist_interfaces postscreen_denylist_action postscreen_dnsbl_allowlist_threshold These new parameters have backwards-compatible default settings that support the old parameter names, so that the name change should not affect Postfix behavior. This means that existing management tools that use the old parameter names should keep working as before. This compatibility safety net may break when some management tools use the new parameter names, and some use the old names, such that different tools will disagree on how Postfix works. Changes in logging ------------------ The following logging replaces forms that contain 'blacklist' or 'whitelist': postfix/postscreen[pid]: ALLOWLIST VETO [address]:port postfix/postscreen[pid]: ALLOWLISTED [address]:port postfix/postscreen[pid]: DENYLISTED [address]:port To avoid breaking logfile analysis tools, Postfix keeps logging the old forms by default, as long as the compatibility_level parameter setting is less than 3.6, and the respectful_logging parameter is not explicitly configured. As a reminder, Postfix will log the following: postfix/postscreen[pid]: Using backwards-compatible default setting respectful_logging=no for client [address]:port To keep logging the old form, make the setting "respectful_logging = no" permanent in main.cf, for example: # postconf "respectful_logging = no" # postfix reload To stop the reminder, configure the respectful_logging parameter to "yes" or "no", or configure "compatibility_level = 3.6". Major changes - threaded bounces -------------------------------- [Feature 20201205] Support for threaded bounces. This allows mail readers to present a non-delivery, delayed delivery, or successful delivery notification in the same email thread as the original message. Unfortunately, this also makes it easy for users to mistakenly delete the whole email thread (all related messages), instead of deleting only the delivery status notification. To enable, specify "enable_threaded_bounces = yes". Other changes - smtpd_sasl_mechanism_list ----------------------------------------- [Feature 20200906] The smtpd_sasl_mechanism_list parameter (default: !external, static:rest) prevents confusing errors when a SASL backend announces EXTERNAL support which Postfix does not support. Other changes - delivery logging -------------------------------- [Incompat 20200531] Postfix delivery agents now log an explicit record when delegating delivery to a different Postfix delivery agent. For example, with "best_mx_transport = local", an SMTP delivery agent will now log when a recipient will be delivered locally. This makes the delegating delivery agent visible, where it would otherwise have remained invisible, which would complicate troubleshooting. postfix/smtp[pid]: queueid: passing to transport=local This will usually be followed by logging for an actual delivery: postfix/local[pid]: queueid: to=, relay=local, ... Other examples: the local delivery agent will log a record that it defers mailbox delivery through mailbox_transport or through fallback_transport. Other changes - error logging ----------------------------- [Incompat 20200531] Postfix programs will now log "Application error" instead of "Success" or "Unknown error: 0" when an operation fails with errno == 0, i.e., the error originates from non-kernel code. Other changes - dns lookups --------------------------- [Feature 20200509] The threadsafe resolver API (res_nxxx() calls) is now the default, not because the API is threadsafe, but because this is the API where new features are being added. To build old style, build with: make makefiles CCARGS="-DNO_RES_NCALLS..." This is the default for systems that are known not to support the threadsafe resolver API. @ text @d10 1 a10 1 d496 2 a497 2 parameter (default: Postfix ≥ 3.0: no, Postfix < 3.0: yes). The purpose is to get consistent treatment of different forms of the same hostname.

@ 1.1.1.5.2.1 log @Pullup the following, requested by kim in ticket #518: external/ibm-public/postfix/dist/html/postfix-doc.css up to 1.1.1.1 external/ibm-public/postfix/dist/mantools/check-double-history up to 1.1.1.1 external/ibm-public/postfix/dist/mantools/check-spell-history up to 1.1.1.1 external/ibm-public/postfix/dist/mantools/check-table-proto up to 1.1.1.1 external/ibm-public/postfix/dist/proto/stop.double-history up to 1.1.1.1 external/ibm-public/postfix/dist/proto/stop.spell-history up to 1.1.1.1 external/ibm-public/postfix/dist/src/postconf/test71.ref up to 1.1.1.1 external/ibm-public/postfix/dist/src/util/mkmap_db.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap.h up to 1.2 external/ibm-public/postfix/dist/src/util/inet_addr_sizes.c up to 1.2 external/ibm-public/postfix/dist/src/util/inet_addr_sizes.h up to 1.2 external/ibm-public/postfix/dist/src/util/inet_prefix_top.c up to 1.2 external/ibm-public/postfix/dist/src/util/inet_prefix_top.h up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_cdb.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_dbm.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_fail.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_lmdb.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_open.c up to 1.2 external/ibm-public/postfix/dist/src/util/mkmap_sdbm.c up to 1.2 external/ibm-public/postfix/dist/RELEASE_NOTES-3.7 up to 1.1.1.1 external/ibm-public/postfix/dist/src/global/mkmap.h delete external/ibm-public/postfix/dist/src/global/mkmap_cdb.c delete external/ibm-public/postfix/dist/src/global/mkmap_db.c delete external/ibm-public/postfix/dist/src/global/mkmap_dbm.c delete external/ibm-public/postfix/dist/src/global/mkmap_fail.c delete external/ibm-public/postfix/dist/src/global/mkmap_lmdb.c delete external/ibm-public/postfix/dist/src/global/mkmap_open.c delete external/ibm-public/postfix/dist/src/global/mkmap_sdbm.c delete external/ibm-public/postfix/dist/HISTORY up to 1.1.1.29 external/ibm-public/postfix/dist/INSTALL up to 1.1.1.9 external/ibm-public/postfix/dist/Makefile.in up to 1.1.1.10 external/ibm-public/postfix/dist/RELEASE_NOTES up to 1.1.1.17 external/ibm-public/postfix/dist/WISHLIST up to 1.1.1.2 external/ibm-public/postfix/dist/makedefs up to 1.16 external/ibm-public/postfix/dist/postfix-env.sh up to 1.1.1.2 external/ibm-public/postfix/dist/README_FILES/ADDRESS_CLASS_README up to 1.1.1.2 external/ibm-public/postfix/dist/README_FILES/BASIC_CONFIGURATION_README up to 1.1.1.6 external/ibm-public/postfix/dist/README_FILES/DEBUG_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/FORWARD_SECRECY_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/INSTALL up to 1.10 external/ibm-public/postfix/dist/README_FILES/IPV6_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/MAILLOG_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/MILTER_README up to 1.1.1.9 external/ibm-public/postfix/dist/README_FILES/MYSQL_README up to 1.1.1.5 external/ibm-public/postfix/dist/README_FILES/PGSQL_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/QSHAPE_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/RELEASE_NOTES up to 1.1.1.17 external/ibm-public/postfix/dist/README_FILES/SASL_README up to 1.1.1.11 external/ibm-public/postfix/dist/README_FILES/SMTPD_POLICY_README up to 1.1.1.7 external/ibm-public/postfix/dist/README_FILES/SMTPD_PROXY_README up to 1.1.1.6 external/ibm-public/postfix/dist/README_FILES/SQLITE_README up to 1.1.1.4 external/ibm-public/postfix/dist/README_FILES/STANDARD_CONFIGURATION_README up to 1.1.1.6 external/ibm-public/postfix/dist/README_FILES/TLS_README up to 1.14 external/ibm-public/postfix/dist/conf/aliases up to 1.1.1.5 external/ibm-public/postfix/dist/conf/main.cf up to 1.10 external/ibm-public/postfix/dist/conf/master.cf up to 1.11 external/ibm-public/postfix/dist/conf/postfix-files up to 1.9 external/ibm-public/postfix/dist/conf/postfix-script up to 1.4 external/ibm-public/postfix/dist/conf/postfix-tls-script up to 1.5 external/ibm-public/postfix/dist/conf/virtual up to 1.1.1.6 external/ibm-public/postfix/dist/html/ADDRESS_CLASS_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/ADDRESS_REWRITING_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/ADDRESS_VERIFICATION_README.html up to 1.11 external/ibm-public/postfix/dist/html/BACKSCATTER_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/BASIC_CONFIGURATION_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/BDAT_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/BUILTIN_FILTER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/CDB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/COMPATIBILITY_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/CONNECTION_CACHE_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/CONTENT_INSPECTION_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/DATABASE_README.html up to 1.1.1.10 external/ibm-public/postfix/dist/html/DB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/DEBUG_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/DSN_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/ETRN_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/FILTER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/FORWARD_SECRECY_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/INSTALL.html up to 1.10 external/ibm-public/postfix/dist/html/IPV6_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/LDAP_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/LINUX_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/LMDB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/LOCAL_RECIPIENT_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/MAILDROP_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/MAILLOG_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/MEMCACHE_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/MILTER_README.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/MULTI_INSTANCE_README.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/MYSQL_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/NFS_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/OVERVIEW.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/PACKAGE_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/PCRE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/PGSQL_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/POSTSCREEN_3_5_README.html up to 1.1.1.2 external/ibm-public/postfix/dist/html/POSTSCREEN_README.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/QSHAPE_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/RESTRICTION_CLASS_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/SASL_README.html up to 1.1.1.11 external/ibm-public/postfix/dist/html/SCHEDULER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/SMTPD_ACCESS_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/SMTPD_POLICY_README.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/SMTPD_PROXY_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/SMTPUTF8_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/SOHO_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/SQLITE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/STANDARD_CONFIGURATION_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/STRESS_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/TLS_LEGACY_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/TLS_README.html up to 1.15 external/ibm-public/postfix/dist/html/TUNING_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/UUCP_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/VERP_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/VIRTUAL_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/XCLIENT_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/XFORWARD_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/access.5.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/aliases.5.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/anvil.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/bounce.5.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/bounce.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/canonical.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/cidr_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/cleanup.8.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/defer.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/discard.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/dnsblog.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/error.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/flush.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/generic.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/header_checks.5.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/index.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/ldap_table.5.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/lmdb_table.5.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/lmtp.8.html up to 1.1.1.12 external/ibm-public/postfix/dist/html/local.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/mailq.1.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/makedefs.1.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/master.5.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/master.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/memcache_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/mysql_table.5.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/newaliases.1.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/nisplus_table.5.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/oqmgr.8.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/pcre_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/pgsql_table.5.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/pickup.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/pipe.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postalias.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postcat.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postconf.1.html up to 1.1.1.11 external/ibm-public/postfix/dist/html/postconf.5.html up to 1.19 external/ibm-public/postfix/dist/html/postdrop.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postfix-manuals.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/postfix-tls.1.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/postfix-wrapper.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/postfix.1.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/postkick.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postlock.1.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/postlog.1.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/postlogd.8.html up to 1.1.1.3 external/ibm-public/postfix/dist/html/postmap.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postmulti.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/postqueue.1.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/postscreen.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/postsuper.1.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/posttls-finger.1.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/proxymap.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/qmgr.8.html up to 1.1.1.9 external/ibm-public/postfix/dist/html/qmqp-sink.1.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/qmqp-source.1.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/qmqpd.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/qshape.1.html up to 1.1.1.4 external/ibm-public/postfix/dist/html/regexp_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/relocated.5.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/scache.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/sendmail.1.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/showq.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/smtp-sink.1.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/smtp-source.1.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/smtp.8.html up to 1.1.1.12 external/ibm-public/postfix/dist/html/smtpd.8.html up to 1.1.1.13 external/ibm-public/postfix/dist/html/socketmap_table.5.html up to 1.1.1.5 external/ibm-public/postfix/dist/html/spawn.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/sqlite_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/tcp_table.5.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/tlsmgr.8.html up to 1.1.1.6 external/ibm-public/postfix/dist/html/tlsproxy.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/trace.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/transport.5.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/trivial-rewrite.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/verify.8.html up to 1.1.1.8 external/ibm-public/postfix/dist/html/virtual.5.html up to 1.1.1.7 external/ibm-public/postfix/dist/html/virtual.8.html up to 1.1.1.7 external/ibm-public/postfix/dist/man/man1/postfix-tls.1 up to 1.3 external/ibm-public/postfix/dist/man/man1/postfix.1 up to 1.6 external/ibm-public/postfix/dist/man/man1/postlog.1 up to 1.5 external/ibm-public/postfix/dist/man/man1/postqueue.1 up to 1.5 external/ibm-public/postfix/dist/man/man1/posttls-finger.1 up to 1.5 external/ibm-public/postfix/dist/man/man5/aliases.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/cidr_table.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/ldap_table.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/mysql_table.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/pcre_table.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/pgsql_table.5 up to 1.5 external/ibm-public/postfix/dist/man/man5/postconf.5 up to 1.19 external/ibm-public/postfix/dist/man/man5/regexp_table.5 up to 1.4 external/ibm-public/postfix/dist/man/man5/virtual.5 up to 1.5 external/ibm-public/postfix/dist/man/man8/postscreen.8 up to 1.5 external/ibm-public/postfix/dist/man/man8/smtp.8 up to 1.5 external/ibm-public/postfix/dist/man/man8/smtpd.8 up to 1.5 external/ibm-public/postfix/dist/man/man8/tlsproxy.8 up to 1.5 external/ibm-public/postfix/dist/mantools/check-double-cc up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-double-install-proto-text up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-double-proto-html up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-postfix-files up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-postlink up to 1.1.1.3 external/ibm-public/postfix/dist/mantools/check-spell-cc up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-spell-install-proto-text up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/check-spell-proto-html up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/make_soho_readme up to 1.1.1.4 external/ibm-public/postfix/dist/mantools/makemanidx up to 1.1.1.4 external/ibm-public/postfix/dist/mantools/man2html up to 1.1.1.5 external/ibm-public/postfix/dist/mantools/manlint up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/manspell up to 1.1.1.2 external/ibm-public/postfix/dist/mantools/missing-proxy-read-maps up to 1.1.1.3 external/ibm-public/postfix/dist/mantools/postlink up to 1.1.1.13 external/ibm-public/postfix/dist/mantools/spell up to 1.1.1.3 external/ibm-public/postfix/dist/proto/ADDRESS_CLASS_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/ADDRESS_REWRITING_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/ADDRESS_VERIFICATION_README.html up to 1.11 external/ibm-public/postfix/dist/proto/BACKSCATTER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/BASIC_CONFIGURATION_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/BDAT_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/BUILTIN_FILTER_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/CDB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/COMPATIBILITY_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/CONNECTION_CACHE_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/CONTENT_INSPECTION_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/DATABASE_README.html up to 1.1.1.10 external/ibm-public/postfix/dist/proto/DB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/DEBUG_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/DSN_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/ETRN_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/FILTER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/FORWARD_SECRECY_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/INSTALL.html up to 1.10 external/ibm-public/postfix/dist/proto/IPV6_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/LDAP_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/LINUX_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/LMDB_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/LOCAL_RECIPIENT_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/MAILDROP_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/MAILLOG_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/MEMCACHE_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/MILTER_README.html up to 1.1.1.9 external/ibm-public/postfix/dist/proto/MULTI_INSTANCE_README.html up to 1.1.1.8 external/ibm-public/postfix/dist/proto/MYSQL_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/NFS_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/OVERVIEW.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/PACKAGE_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/PCRE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/PGSQL_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/POSTSCREEN_3_5_README.html up to 1.1.1.2 external/ibm-public/postfix/dist/proto/POSTSCREEN_README.html up to 1.1.1.8 external/ibm-public/postfix/dist/proto/QSHAPE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/RESTRICTION_CLASS_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/SASL_README.html up to 1.1.1.11 external/ibm-public/postfix/dist/proto/SCHEDULER_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/SMTPD_ACCESS_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/SMTPD_POLICY_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/proto/SMTPD_PROXY_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/SMTPUTF8_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/SQLITE_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/STANDARD_CONFIGURATION_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/STRESS_README.html up to 1.1.1.7 external/ibm-public/postfix/dist/proto/TLS_LEGACY_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/TLS_README.html up to 1.14 external/ibm-public/postfix/dist/proto/TUNING_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/UUCP_README.html up to 1.1.1.3 external/ibm-public/postfix/dist/proto/VERP_README.html up to 1.1.1.5 external/ibm-public/postfix/dist/proto/VIRTUAL_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/XCLIENT_README.html up to 1.1.1.6 external/ibm-public/postfix/dist/proto/XFORWARD_README.html up to 1.1.1.4 external/ibm-public/postfix/dist/proto/aliases up to 1.1.1.6 external/ibm-public/postfix/dist/proto/cidr_table up to 1.1.1.6 external/ibm-public/postfix/dist/proto/ldap_table up to 1.1.1.7 external/ibm-public/postfix/dist/proto/mysql_table up to 1.1.1.8 external/ibm-public/postfix/dist/proto/pcre_table up to 1.1.1.6 external/ibm-public/postfix/dist/proto/pgsql_table up to 1.1.1.8 external/ibm-public/postfix/dist/proto/postconf.html.prolog up to 1.1.1.5 external/ibm-public/postfix/dist/proto/postconf.proto up to 1.19 external/ibm-public/postfix/dist/proto/regexp_table up to 1.1.1.6 external/ibm-public/postfix/dist/proto/stop up to 1.1.1.7 external/ibm-public/postfix/dist/proto/stop.double-cc up to 1.1.1.2 external/ibm-public/postfix/dist/proto/stop.double-proto-html up to 1.1.1.2 external/ibm-public/postfix/dist/proto/stop.spell-cc up to 1.1.1.2 external/ibm-public/postfix/dist/proto/stop.spell-proto-html up to 1.1.1.2 external/ibm-public/postfix/dist/proto/virtual up to 1.1.1.6 external/ibm-public/postfix/dist/src/cleanup/cleanup_map1n.c up to 1.4 external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.c up to 1.5 external/ibm-public/postfix/dist/src/dns/Makefile.in up to 1.1.1.5 external/ibm-public/postfix/dist/src/dns/dns.h up to 1.6 external/ibm-public/postfix/dist/src/dns/dns_lookup.c up to 1.8 external/ibm-public/postfix/dist/src/dns/dns_rr.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_rr_eq_sa.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_sa_to_rr.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_str_resflags.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_strrecord.c up to 1.3 external/ibm-public/postfix/dist/src/dns/dns_strtype.c up to 1.2 external/ibm-public/postfix/dist/src/global/Makefile.in up to 1.1.1.10 external/ibm-public/postfix/dist/src/global/compat_level.c up to 1.3 external/ibm-public/postfix/dist/src/global/compat_level.h up to 1.3 external/ibm-public/postfix/dist/src/global/dict_ldap.c up to 1.5 external/ibm-public/postfix/dist/src/global/dict_memcache.c up to 1.3 external/ibm-public/postfix/dist/src/global/dict_mysql.c up to 1.4 external/ibm-public/postfix/dist/src/global/dict_pgsql.c up to 1.4 external/ibm-public/postfix/dist/src/global/dict_proxy.h up to 1.3 external/ibm-public/postfix/dist/src/global/dict_sqlite.c up to 1.4 external/ibm-public/postfix/dist/src/global/dynamicmaps.c up to 1.4 external/ibm-public/postfix/dist/src/global/header_body_checks.h up to 1.3 external/ibm-public/postfix/dist/src/global/mail_dict.c up to 1.3 external/ibm-public/postfix/dist/src/global/mail_params.h up to 1.19 external/ibm-public/postfix/dist/src/global/mail_proto.h up to 1.5 external/ibm-public/postfix/dist/src/global/mail_version.h up to 1.6 external/ibm-public/postfix/dist/src/global/map_search.c up to 1.4 external/ibm-public/postfix/dist/src/global/map_search.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/global/maps.c up to 1.4 external/ibm-public/postfix/dist/src/global/maps.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/global/mkmap_proxy.c up to 1.2 external/ibm-public/postfix/dist/src/global/namadr_list.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/global/namadr_list.ref up to 1.1.1.5 external/ibm-public/postfix/dist/src/global/smtp_stream.c up to 1.5 external/ibm-public/postfix/dist/src/global/smtp_stream.h up to 1.4 external/ibm-public/postfix/dist/src/local/local_expand.c up to 1.3 external/ibm-public/postfix/dist/src/milter/milter8.c up to 1.5 external/ibm-public/postfix/dist/src/postalias/Makefile.in up to 1.1.1.6 external/ibm-public/postfix/dist/src/postalias/postalias.c up to 1.5 external/ibm-public/postfix/dist/src/postconf/Makefile.in up to 1.1.1.11 external/ibm-public/postfix/dist/src/postconf/postconf.h up to 1.4 external/ibm-public/postfix/dist/src/postconf/postconf_dbms.c up to 1.5 external/ibm-public/postfix/dist/src/postconf/postconf_edit.c up to 1.3 external/ibm-public/postfix/dist/src/postconf/postconf_main.c up to 1.4 external/ibm-public/postfix/dist/src/postconf/postconf_master.c up to 1.8 external/ibm-public/postfix/dist/src/postconf/postconf_misc.c up to 1.3 external/ibm-public/postfix/dist/src/postconf/test58.ref up to 1.1.1.3 external/ibm-public/postfix/dist/src/postfix/postfix.c up to 1.6 external/ibm-public/postfix/dist/src/postlog/postlog.c up to 1.5 external/ibm-public/postfix/dist/src/postlogd/Makefile.in up to 1.1.1.3 external/ibm-public/postfix/dist/src/postmap/Makefile.in up to 1.1.1.7 external/ibm-public/postfix/dist/src/postmap/postmap.c up to 1.5 external/ibm-public/postfix/dist/src/postqueue/postqueue.c up to 1.5 external/ibm-public/postfix/dist/src/postscreen/postscreen.c up to 1.5 external/ibm-public/postfix/dist/src/postscreen/postscreen_smtpd.c up to 1.5 external/ibm-public/postfix/dist/src/posttls-finger/posttls-finger.c up to 1.5 external/ibm-public/postfix/dist/src/proxymap/Makefile.in up to 1.1.1.6 external/ibm-public/postfix/dist/src/showq/showq.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/Makefile.in up to 1.1.1.10 external/ibm-public/postfix/dist/src/smtp/lmtp_params.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp.c up to 1.13 external/ibm-public/postfix/dist/src/smtp/smtp.h up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_addr.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_addr.h up to 1.3 external/ibm-public/postfix/dist/src/smtp/smtp_connect.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_params.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_proto.c up to 1.5 external/ibm-public/postfix/dist/src/smtp/smtp_reuse.c up to 1.4 external/ibm-public/postfix/dist/src/smtp/smtp_session.c up to 1.5 external/ibm-public/postfix/dist/src/smtpd/Makefile.in up to 1.1.1.11 external/ibm-public/postfix/dist/src/smtpd/smtpd.c up to 1.20 external/ibm-public/postfix/dist/src/smtpd/smtpd.h up to 1.5 external/ibm-public/postfix/dist/src/smtpd/smtpd_check.c up to 1.6 external/ibm-public/postfix/dist/src/smtpd/smtpd_peer.c up to 1.5 external/ibm-public/postfix/dist/src/smtpd/smtpd_proxy.c up to 1.3 external/ibm-public/postfix/dist/src/smtpd/smtpd_sasl_glue.c up to 1.5 external/ibm-public/postfix/dist/src/smtpd/smtpd_server.in up to 1.1.1.4 external/ibm-public/postfix/dist/src/smtpd/smtpd_server.ref up to 1.1.1.4 external/ibm-public/postfix/dist/src/tls/Makefile.in up to 1.1.1.10 external/ibm-public/postfix/dist/src/tls/tls.h up to 1.5 external/ibm-public/postfix/dist/src/tls/tls_client.c up to 1.13 external/ibm-public/postfix/dist/src/tls/tls_dane.c up to 1.5 external/ibm-public/postfix/dist/src/tls/tls_dh.c up to 1.5 external/ibm-public/postfix/dist/src/tls/tls_fprint.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_misc.c up to 1.5 external/ibm-public/postfix/dist/src/tls/tls_proxy.h up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_proxy_client_misc.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_proxy_client_print.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_proxy_client_scan.c up to 1.4 external/ibm-public/postfix/dist/src/tls/tls_server.c up to 1.12 external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.c up to 1.6 external/ibm-public/postfix/dist/src/util/Makefile.in up to 1.1.1.11 external/ibm-public/postfix/dist/src/util/argv.c up to 1.4 external/ibm-public/postfix/dist/src/util/argv.h up to 1.4 external/ibm-public/postfix/dist/src/util/attr.h up to 1.5 external/ibm-public/postfix/dist/src/util/clean_env.c up to 1.3 external/ibm-public/postfix/dist/src/util/dict.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict.h up to 1.5 external/ibm-public/postfix/dist/src/util/dict_cache.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_cdb.h up to 1.2 external/ibm-public/postfix/dist/src/util/dict_cidr.c up to 1.5 external/ibm-public/postfix/dist/src/util/dict_db.h up to 1.4 external/ibm-public/postfix/dist/src/util/dict_dbm.h up to 1.2 external/ibm-public/postfix/dist/src/util/dict_fail.h up to 1.2 external/ibm-public/postfix/dist/src/util/dict_lmdb.h up to 1.3 external/ibm-public/postfix/dist/src/util/dict_open.c up to 1.4 external/ibm-public/postfix/dist/src/util/dict_pcre.c up to 1.5 external/ibm-public/postfix/dist/src/util/dict_regexp.c up to 1.5 external/ibm-public/postfix/dist/src/util/dict_sdbm.h up to 1.2 external/ibm-public/postfix/dist/src/util/hash_fnv.c up to 1.3 external/ibm-public/postfix/dist/src/util/hash_fnv.h up to 1.3 external/ibm-public/postfix/dist/src/util/htable.c up to 1.4 external/ibm-public/postfix/dist/src/util/inet_connect.c up to 1.3 external/ibm-public/postfix/dist/src/util/make_dirs.c up to 1.2 external/ibm-public/postfix/dist/src/util/match_list.c up to 1.3 external/ibm-public/postfix/dist/src/util/mystrtok.c up to 1.4 external/ibm-public/postfix/dist/src/util/mystrtok.ref up to 1.1.1.2 external/ibm-public/postfix/dist/src/util/sock_addr.c up to 1.3 external/ibm-public/postfix/dist/src/util/sock_addr.h up to 1.2 external/ibm-public/postfix/dist/src/util/split_nameval.c up to 1.2 external/ibm-public/postfix/dist/src/util/stringops.h up to 1.5 external/ibm-public/postfix/dist/src/util/sys_defs.h up to 1.14 external/ibm-public/postfix/dist/src/util/unix_send_fd.c up to 1.8 external/ibm-public/postfix/dist/src/util/valid_hostname.c up to 1.3 external/ibm-public/postfix/dist/src/util/valid_hostname.h up to 1.2 external/ibm-public/postfix/dist/src/xsasl/xsasl_cyrus_server.c up to 1.4 external/ibm-public/postfix/lib/global/Makefile up to 1.10 external/ibm-public/postfix/lib/util/Makefile up to 1.11 doc/3RDPARTY (apply patch) Update Postfix to 3.8.4. @ text @a10 1 @ 1.1.1.6 log @Import Postfix 3.8.4 (last was 3.7.3) December 22, 2023: 3.8.4/3.7.9 ============================== Security: this release adds support to defend against an email spoofing attack (SMTP smuggling) on recipients at a Postfix server. For background, see https://www.postfix.org/smtp-smuggling.html. Sites concerned about SMTP smuggling attacks should enable this feature on Internet-facing Postfix servers. For compatibility with non-standard clients, Postfix by default excludes clients in mynetworks from this countermeasure. The recommended settings are: # Optionally disconnect remote SMTP clients that send bare newlines, # but allow local clients with non-standard SMTP implementations # such as netcat, fax machines, or load balancer health checks. # smtpd_forbid_bare_newline = yes smtpd_forbid_bare_newline_exclusions = $mynetworks The smtpd_forbid_bare_newline feature is disabled by default. November 1, 2023: 3.8.3/3.7.8 ============================= Bugfix (defect introduced Postfix 2.5, date 20080104): the Postfix SMTP server was waiting for a client command instead of replying immediately, after a client certificate verification error in TLS wrappermode. Reported by Andreas Kinzler. Usability: the Postfix SMTP server (finally) attempts to log the SASL username after authentication failure. In Postfix logging, this appends ", sasl_username=xxx" after the reason for SASL authentication failure. The logging replaces an unavailable reason with "(reason unavailable)", and replaces an unavailable sasl_username with "(unavailable)". Based on code by Jozsef Kadlecsik. Compatibility bugfix (defect introduced: Postfix 2.11, date 20130405): in forward_path, the expression ${recipient_delimiter} would expand to an empty string when a recipient address had no recipient delimiter. The compatibility fix is to use a configured recipient delimiter value instead. Reported by Tod A. Sandman. September 1, 2023: 3.8.2/3.7.7 ============================== Bugfix (defect introduced: Postfix alpha, 19980207): the valid_hostname() check in the Postfix DNS client library was blocking unusual but legitimate wildcard names (*.name) in some DNS lookup results and lookup requests. Examples: name class/type result *.one.example IN CNAME *.other.example *.other.example IN A 10.0.0.1 *.other.example IN TLSA ..certificate info... Such syntax is blesed in RFC 1034 section 4.3.3. Bugfix (defect introduced: Postfix 3.0, 20140218): when an address verification probe fails during or after an opportunistic TLS handshake, don't enforce a minimum time-in-queue before falling back to plaintext. Problem reported by Serg. June 5, 2023: 3.8.1/3.7.6 ========================= Optional: harden a Postfix SMTP server against remote SMTP clients that violate RFC 2920 (or 5321) command pipelining constraints. With "smtpd_forbid_unauth_pipelining = yes", the server disconnects a client immediately, after responding with "554 5.5.0 Error: SMTP protocol synchronization" and after logging "improper command pipelining" with the unexpected remote SMTP client input. This feature is disabled by default in Postfix 3.5-3.8 to avoid breaking home-grown utilities, but it is enabled by default in Postfix 3.9. A similar feature is enabled by default in the Exim SMTP server. Optional: some OS distributions crank up TLS security to 11, and in doing so increase the number of plaintext email deliveries. This introduces basic OpenSSL configuration file support that may be used to override OS-level settings. Details are in the postconf(5) manpage under tls_config_file and tls_config_name. Bugfix (defect introduced: Postfix 1.0): the command "postconf .. name=v1 .. name=v2 .." (multiple instances of the same parameter name) created multiple main.cf name=value entries with the same parameter name. It now logs a warning and skips the earlier name(s) and value(s). Found during code maintenance. Bugfix (defect introduced: Postfix 3.3): the command "postconf -M name1/type1='name2 type2 ...'" died with a segmentation violation when the request matched multiple master.cf entries. The master.cf file was not damaged. Problem reported by SATOH Fumiyasu. Bugfix (defect introduced: Postfix 2.11): the command "postconf -M name1/type1='name2 type2 ...'" could add a service definition to master.cf that conflicted with an already existing service definition. It now replaces all existing service definitions that match the service pattern 'name1/type1' or the service name and type in 'name2 type2 ...' with a single service definition 'name2 type2 ...'. Problem reported by SATOH Fumiyasu. Bugfix (defect introduced: Postfix 3.8) the posttls-finger command could access uninitialized memory when reconnecting. This also fixes a malformed warning message when a destination contains ":service" information. Reported by Thomas Korbar. Bugfix (defect introduced: Postfix 3.2): the MySQL client could return "not found" instead of "error" (for example, resulting in a 5XX SMTP status instead of 4XX) during the time that all MySQL server connections were turned down after error. Found during code maintenance. File: global/dict_mysql.c. This was already fixed in Postfix 3.4-3.7. April 18, 2023: 3.7.5 ===================== Bugfix (problem introduced in Postfix 3.5): check_ccert_access did not handle inline map specifications. Report and fix by Sean Gallagher. Bugfix (problem introduced in Postfix 3.4): the posttls-finger command failed to detect that a connection was resumed in the case that a server did not return a certificate. Fix by Viktor Dukhovni. Workaround: OpenSSL 3.x EVP_get_cipherbyname() can return lazily-bound handles. Postfix now checks that the expected functionality will be available instead of failing later. Fix by Viktor Dukhovni. Safety: the long form "{ name = value }" in import_environment or export_environment is not documented (with spaces around the '='), but it was silently accepted, and it was stored in the process environment as the invalid form "name = value", thus not setting or overriding an entry for "name". This form is now stored as the expected "name=value". Found during code maintenance. Bugfix (problem introduced in Postfix 3.2): the MySQL client could return "not found" instead of "error" (for example, resulting in a 5XX SMTP status instead of 4XX) during the time that all MySQL server connections were turned down after error. Found during code maintenance. April 17, 2023: 3.8.0 ===================== Support to look up DNS SRV records in the Postfix SMTP/LMTP client, Based on code by Tomas Korbar (Red Hat). For example, with "use_srv_lookup = submission" and "relayhost = example.com:submission", the Postfix SMTP client will look up DNS SRV records for _submission._tcp.example.com, and will relay email through the hosts and ports that are specified with those records. TLS obsolescence: Postfix now treats the "export" and "low" cipher grade settings as "medium". The "export" and "low" grades are no longer supported in OpenSSL 1.1.1, the minimum version required in Postfix 3.6.0 and later. Also, Postfix default settings now exclude deprecated or unused ciphers (SEED, IDEA, 3DES, RC2, RC4, RC5), digest (MD5), key exchange algorithms (DH, ECDH), and public key algorithm (DSS). Attack resistance: the Postfix SMTP server can now aggregate smtpd_client_*_rate and smtpd_client_*_count statistics by network block instead of by IP address, to raise the bar against a memory exhaustion attack in the anvil(8) server; Postfix TLS support unconditionally disables TLS renegotiation in the middle of an SMTP connection, to avoid a CPU exhaustion attack. The PostgreSQL client encoding is now configurable with the "encoding" Postfix configuration file attribute. The default is "UTF8". Previously the encoding was hard-coded as "LATIN1", which is not useful in the context of SMTP. The postconf command now warns for #comment in or after a Postfix parameter value. Postfix programs do not support #comment after other text, and treat that as input. January 12, 2023: 3.7.4 ======================= Workaround: with OpenSSL 3 and later always turn on SSL_OP_IGNORE_UNEXPECTED_EOF, to avoid warning messages and missed opportunities for TLS session reuse. This is safe because the SMTP protocol implements application-level framing, and is therefore not affected by TLS truncation attacks. Fix by Viktor Dukhovni. Workaround: OpenSSL 3.x EVP_get_digestbyname() can return lazily-bound handles for digest implementations. In sufficiently hostile configurations, Postfix could mistakenly believe that a digest algorithm is available, and fail when it is not. A similar workaround may be needed for EVP_get_cipherbyname(). Fix by Viktor Dukhovni. Bugfix (bug introduced in Postfix 2.11): the checkok() macro in tls/tls_fprint.c evaluated its argument unconditionally; it should evaluate the argument only if there was no prior error. Found during code review. Bugfix (bug introduced in Postfix 2.8): postscreen died with a segmentation violation when postscreen_dnsbl_threshold < 1. It should reject such input with a fatal error instead. Discovered by Benny Pedersen. Bitrot: fixes for linker warnings from newer Darwin (MacOS) versions. Viktor Dukhovni. Portability: Linux 6 support. Added missing documentation that cidr:, pcre: and regexp: tables support inline specification only in Postfix 3.7 and later. @ text @a10 1 @ 1.1.1.6.2.1 log @Sync with HEAD @ text @d2 1 a2 1 "https://www.w3.org/TR/html4/loose.dtd"> d97 3 a99 1
  • Resolve address to (transport, next-hop destination) d315 2 a316 2 Daemon Turn-on controls Turn-off controls d343 7 a349 6 Resolve address to (transport, next-hop destination) all mail trivial-
    rewrite(8)
    local_transport, virtual_transport, relay_transport, default_transport, relayhost, sender_dependent_relayhost_maps, sender_dependent_default_transport_maps content_filter a776 5

    Note: virtual aliasing (virtual_alias_maps) applies to all recipients: local(8), virtual, and remote. This is unlike local aliasing (alias_maps) which applies only to local(8) recipients.

    d795 1 a795 1 iteration of virtual aliasing, but are not subjected to canonical d836 3 a838 2
  • Resolve address to (transport, next-hop destination) d876 1 a876 2

    Resolve address to (transport, next-hop destination)

    d879 10 a888 36 incoming queue or old mail from the deferred queue. First it looks for overrides:

    When there is no content filter override, the qmgr(8) queue manager asks the trivial-rewrite(8) address rewriting and resolving daemon for each recipient how to deliver it (which message delivery transport) and where to deliver it (what next-hop destination).

    As of version 2.0, Postfix distinguishes four major domain classes. Each class has its own list of recipient domain names, and each class has its own delivery method, as shown in the table below. See the ADDRESS_CLASS_README document for the fine details. Postfix versions before 2.0 only distinguish between local delivery and everything else.

    Note that the table does not match recipients against virtual_alias_domains. The reason is that all valid recipients in a virtual alias domain must be aliased to an address in a different domain. All other recipients in a virtual alias domain are by definition undeliverable, and do not need to be considered here.

    d894 3 a896 3 Domain class Recipient domain match Delivery method Availability d898 2 a899 2 Local mydestination, inet_interfaces, proxy_interfaces local_transport Postfix 1.0 d901 2 a902 2 Virtual mailbox virtual_mailbox_domains virtual_transport Postfix 2.0 d904 2 a905 2 Relay relay_domains relay_transport Postfix 2.0 d907 2 a908 2 Default none default_transport Postfix 1.0 d914 1 a914 9

    The delivery methods in the above table may include a next-hop destination in addition to a delivery transport. This may override the next-hop destination that is by default taken from the recipient domain.

    Over time, features have been added to override the above transport and/or next-hop destination information. The following table lists where a transport or next-hop destination may be taken from, depending on the recipient domain class.

    d916 9 a924 1
    d926 3 a928 1 d930 1 a930 22
    Domain class Transport sources (in order of descending precedence) Next hop sources (in order of descending precedence)
    Local transport_maps, local_transport transport_maps, local_transport, recipient domain
    Virtual mailbox transport_maps, virtual_transport transport_maps, virtual_transport, recipient domain
    Relay transport_maps, relay_transport transport_maps, relay_transport, sender_dependent_relayhost_maps, relayhost, recipient domain
    Default transport_maps, sender_dependent_default_transport_maps, default_transport transport_maps, sender_dependent_default_transport_maps, default_transport, sender_dependent_relayhost_maps, relayhost, recipient domain
    d932 5 a1021 5

    Note: local aliasing (alias_maps) applies only to local(8) recipients. This is unlike virtual aliasing (virtual_alias_maps) which applies to all recipients: local(8), virtual, and remote.

    @ 1.1.1.7 log @Import postfix-3.10.1 (previous was 3.8.4) Summary: Postfix 3.9 (July 2022): This release focused on enhancing the TLS (Transport Layer Security) capabilities of Postfix. It introduced support for TLSv1.3, allowing for more secure and efficient encrypted communications. Additionally, improvements were made to the handling of TLSA records, which are used in DNS-based Authentication of Named Entities (DANE) to associate TLS certificates with domain names. Postfix 3.10 (July 2023): This version brought significant updates to Postfix's SMTP (Simple Mail Transfer Protocol) functionalities. It added support for the SMTPUTF8 extension, enabling the use of UTF-8 encoding in email addresses and headers, which is essential for internationalization. The release also included performance optimizations, particularly in the handling of large mail queues, and introduced new configuration parameters to provide administrators with finer control over mail processing. The changes are described more in detail in: 3.10 changes: RELEASE_NOTES 3.9 changes: RELEASE_NOTES_3.9 3.8 changes: RELEASE_NOTES_3.8 @ text @d2 1 a2 1 "https://www.w3.org/TR/html4/loose.dtd"> d97 3 a99 1
  • Resolve address to (transport, next-hop destination) d315 2 a316 2 Daemon Turn-on controls Turn-off controls d343 7 a349 6 Resolve address to (transport, next-hop destination) all mail trivial-
    rewrite(8)
    local_transport, virtual_transport, relay_transport, default_transport, relayhost, sender_dependent_relayhost_maps, sender_dependent_default_transport_maps content_filter a776 5

    Note: virtual aliasing (virtual_alias_maps) applies to all recipients: local(8), virtual, and remote. This is unlike local aliasing (alias_maps) which applies only to local(8) recipients.

    d795 1 a795 1 iteration of virtual aliasing, but are not subjected to canonical d836 3 a838 2
  • Resolve address to (transport, next-hop destination) d876 1 a876 2

    Resolve address to (transport, next-hop destination)

    d879 10 a888 36 incoming queue or old mail from the deferred queue. First it looks for overrides:

    When there is no content filter override, the qmgr(8) queue manager asks the trivial-rewrite(8) address rewriting and resolving daemon for each recipient how to deliver it (which message delivery transport) and where to deliver it (what next-hop destination).

    As of version 2.0, Postfix distinguishes four major domain classes. Each class has its own list of recipient domain names, and each class has its own delivery method, as shown in the table below. See the ADDRESS_CLASS_README document for the fine details. Postfix versions before 2.0 only distinguish between local delivery and everything else.

    Note that the table does not match recipients against virtual_alias_domains. The reason is that all valid recipients in a virtual alias domain must be aliased to an address in a different domain. All other recipients in a virtual alias domain are by definition undeliverable, and do not need to be considered here.

    d894 3 a896 3 Domain class Recipient domain match Delivery method Availability d898 2 a899 2 Local mydestination, inet_interfaces, proxy_interfaces local_transport Postfix 1.0 d901 2 a902 2 Virtual mailbox virtual_mailbox_domains virtual_transport Postfix 2.0 d904 2 a905 2 Relay relay_domains relay_transport Postfix 2.0 d907 2 a908 2 Default none default_transport Postfix 1.0 d914 1 a914 9

    The delivery methods in the above table may include a next-hop destination in addition to a delivery transport. This may override the next-hop destination that is by default taken from the recipient domain.

    Over time, features have been added to override the above transport and/or next-hop destination information. The following table lists where a transport or next-hop destination may be taken from, depending on the recipient domain class.

    d916 9 a924 1
    d926 3 a928 1 d930 1 a930 22
    Domain class Transport sources (in order of descending precedence) Next hop sources (in order of descending precedence)
    Local transport_maps, local_transport transport_maps, local_transport, recipient domain
    Virtual mailbox transport_maps, virtual_transport transport_maps, virtual_transport, recipient domain
    Relay transport_maps, relay_transport transport_maps, relay_transport, sender_dependent_relayhost_maps, relayhost, recipient domain
    Default transport_maps, sender_dependent_default_transport_maps, default_transport transport_maps, sender_dependent_default_transport_maps, default_transport, sender_dependent_relayhost_maps, relayhost, recipient domain
    d932 5 a1021 5

    Note: local aliasing (alias_maps) applies only to local(8) recipients. This is unlike virtual aliasing (virtual_alias_maps) which applies to all recipients: local(8), virtual, and remote.

    @ 1.1.1.1.4.1 log @file ADDRESS_REWRITING_README.html was added on branch matt-nb5-mips64 on 2010-04-21 05:23:29 +0000 @ text @d1 1246 @ 1.1.1.1.4.2 log @sync to netbsd-5 @ text @a0 1246 Postfix Address Rewriting

    Postfix Address Rewriting


    Postfix address rewriting purpose

    Address rewriting is at the heart of the Postfix mail system. Postfix rewrites addresses for many different purposes. Some are merely cosmetic, and some are necessary to deliver correctly formatted mail to the correct destination. Examples of address rewriting in Postfix are:

    • Transform an incomplete address into a complete address. For example, transform "username" into "username@@example.com", or transform "username@@hostname" into "username@@hostname.example.com".

    • Replace an address by an equivalent address. For example, replace "username@@example.com" by "firstname.lastname@@example.com" when sending mail, and do the reverse transformation when receiving mail.

    • Replace an internal address by an external address. For example, replace "username@@localdomain.local" by "isp-account@@isp.example" when sending mail from a home computer to the Internet.

    • Replace an address by multiple addresses. For example, replace the address of an alias by the addresses listed under that alias.

    • Determine how and where to deliver mail for a specific address. For example, deliver mail for "username@@example.com" with the smtp(8) delivery agent, to the hosts that are listed in the DNS as the mail servers for the domain "example.com".

    Although Postfix currently has no address rewriting language, it can do surprisingly powerful address manipulation via table lookup. Postfix typically uses lookup tables with fixed strings to map one address to one or multiple addresses, and typically uses regular expressions to map multiple addresses to one or multiple addresses. Fixed-string lookup tables may be in the form of local files, or in the form of NIS, LDAP or SQL databases. The DATABASE_README document gives an introduction to Postfix lookup tables.

    Topics covered in this document:

    To rewrite message headers or not, or to label as invalid

    Postfix versions 2.1 and earlier always rewrite message header addresses, and append Postfix's own domain information to addresses that Postfix considers incomplete. While rewriting message header addresses is OK for mail with a local origin, it is undesirable for remote mail:

    • Message header address rewriting is frowned upon by mail standards,
    • Appending Postfix's own domain produces incorrect results with some incomplete addresses,
    • Appending Postfix's own domain sometimes creates the appearance that spam is sent by local users.

    Postfix versions 2.2 give you the option to either not rewrite message headers from remote SMTP clients at all, or to label incomplete addresses in such message headers as invalid. Here is how it works:

    • Postfix always rewrites message headers from local SMTP clients and from the Postfix sendmail command, and appends its own domain to incomplete addresses. The local_header_rewrite_clients parameter controls what SMTP clients Postfix considers local (by default, only local network interface addresses).
    • Postfix never rewrites message header addresses from remote SMTP clients when the remote_header_rewrite_domain parameter value is empty (the default setting).
    • Otherwise, Postfix rewrites message headers from remote SMTP clients, and appends the remote_header_rewrite_domain value to incomplete addresses. This feature can be used to append a reserved domain such as "domain.invalid", so that incomplete addresses cannot be mistaken for local addresses.

    Postfix address rewriting overview

    The figure below zooms in on those parts of Postfix that are most involved with address rewriting activity. See the OVERVIEW document for an overview of the complete Postfix architecture. Names followed by a number are Postfix daemon programs, while unnumbered names represent Postfix queues or internal sources of mail messages.

    trivial-
    rewrite(8)

    (std form)
    trivial-
    rewrite(8)

    (resolve)
    ^
    |
    |
    v
    ^
    |
    |
    v
    smtpd(8) >- cleanup(8) -> incoming -> active -> qmgr(8) -< smtp(8)
    qmqpd(8) lmtp(8)
    pickup(8) local(8)
    ^
    |
    ^
    |
    |
    v
    bounces
    forwarding
    notices
    deferred

    The table below summarizes all Postfix address manipulations. If you're reading this document for the first time, skip forward to "Address rewriting when mail is received". Once you've finished reading the remainder of this document, the table will help you to quickly find what you need.

    Address manipulation Scope Daemon Global turn-on control Selective turn-off control
    Rewrite addresses to standard form all mail trivial-
    rewrite(8)
    append_at_myorigin, append_dot_mydomain, swap_bangpath, allow_percent_hack local_header_rewrite_clients, remote_header_rewrite_domain
    Canonical address mapping all mail cleanup(8) canonical_maps receive_override_options, local_header_rewrite_clients, remote_header_rewrite_domain
    Address masquerading all mail cleanup(8) masquerade_domains receive_override_options, local_header_rewrite_clients, remote_header_rewrite_domain
    Automatic BCC recipients new mail cleanup(8) always_bcc, sender_bcc_maps, recipient_bcc_maps receive_override_options
    Virtual aliasing all mail cleanup(8) virtual_alias_maps receive_override_options
    Resolve address to destination all mail trivial-
    rewrite(8)
    none none
    Mail transport switch all mail trivial-
    rewrite(8)
    transport_maps none
    Relocated users table all mail trivial-
    rewrite(8)
    relocated_maps none
    Generic mapping table outgoing SMTP mail smtp(8) smtp_generic_maps none
    Local alias database local mail only local(8) alias_maps none
    Local per-user .forward files local mail only local(8) forward_path none
    Local catch-all address local mail only local(8) luser_relay none

    Address rewriting when mail is received

    The cleanup(8) server receives mail from outside of Postfix as well as mail from internal sources such as forwarded mail, undeliverable mail that is bounced to the sender, and postmaster notifications about problems with the mail system.

    The cleanup(8) server transforms the sender, recipients and message content into a standard form before writing it to an incoming queue file. The server cleans up sender and recipient addresses in message headers and in the envelope, adds missing message headers such as From: or Date: that are required by mail standards, and removes message headers such as Bcc: that should not be present. The cleanup(8) server delegates the more complex address manipulations to the trivial-rewrite(8) server as described later in this document.

    Address manipulations at this stage are:

    Rewrite addresses to standard form

    Before the cleanup(8) daemon runs an address through any address mapping lookup table, it first rewrites the address to the standard "user@@fully.qualified.domain" form, by sending the address to the trivial-rewrite(8) daemon. The purpose of rewriting to standard form is to reduce the number of entries needed in lookup tables.

    The Postfix trivial-rewrite(8) daemon implements the following hard-coded address manipulations:

    Rewrite "@@hosta,@@hostb:user@@site" to "user@@site"

    In case you wonder what this is, the address form above is called a route address, and specifies that mail for "user@@site" be delivered via "hosta" and "hostb". Usage of this form has been deprecated for a long time. Postfix has no ability to handle route addresses, other than to strip off the route part.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Rewrite "site!user" to "user@@site"

    This feature is controlled by the boolean swap_bangpath parameter (default: yes). The purpose is to rewrite UUCP-style addresses to domain style. This is useful only when you receive mail via UUCP, but it probably does not hurt otherwise.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Rewrite "user%domain" to "user@@domain"

    This feature is controlled by the boolean allow_percent_hack parameter (default: yes). Typically, this is used in order to deal with monstrosities such as "user%domain@@otherdomain".

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Rewrite "user" to "user@@$myorigin"

    This feature is controlled by the boolean append_at_myorigin parameter (default: yes). You should never turn off this feature, because a lot of Postfix components expect that all addresses have the form "user@@domain".

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter; otherwise they append the domain name specified with the remote_header_rewrite_domain configuration parameter, if one is specified. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    If your machine is not the main machine for $myorigin and you wish to have some users delivered locally without going via that main machine, make an entry in the virtual alias table that redirects "user@@$myorigin" to "user@@$myhostname". See also the "delivering some users locally" section in the STANDARD_CONFIGURATION_README document.

    Rewrite "user@@host" to "user@@host.$mydomain"

    This feature is controlled by the boolean append_dot_mydomain parameter (default: yes). The purpose is to get consistent treatment of different forms of the same hostname.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter; otherwise they append the domain name specified with the remote_header_rewrite_domain configuration parameter, if one is specified. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Some will argue that rewriting "host" to "host.domain" is bad. That is why it can be turned off. Others like the convenience of having Postfix's own domain appended automatically.

    Rewrite "user@@site." to "user@@site" (without the trailing dot).

    A single trailing dot is silently removed. However, an address that ends in multiple dots will be rejected as an invalid address.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Canonical address mapping

    The cleanup(8) daemon uses the canonical(5) tables to rewrite addresses in message envelopes and in message headers. By default all header and envelope addresses are rewritten; this is controlled with the canonical_classes configuration parameter.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Address rewriting is done for local and remote addresses. The mapping is useful to replace login names by "Firstname.Lastname" style addresses, or to clean up invalid domains in mail addresses produced by legacy mail systems.

    Canonical mapping is disabled by default. To enable, edit the canonical_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        canonical_maps = hash:/etc/postfix/canonical
    
    /etc/postfix/canonical:
        wietse        Wietse.Venema
    

    For static mappings as shown above, lookup tables such as hash:, ldap:, mysql: or pgsql: are sufficient. For dynamic mappings you can use regular expression tables. This requires that you become intimately familiar with the ideas expressed in regexp_table(5), pcre_table(5) and canonical(5).

    In addition to the canonical maps which are applied to both sender and recipient addresses, you can specify canonical maps that are applied only to sender addresses or to recipient addresses.

    Example:

    /etc/postfix/main.cf:
        sender_canonical_maps = hash:/etc/postfix/sender_canonical
        recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
    

    The sender and recipient canonical maps are applied before the common canonical maps. The sender_canonical_classes and recipient_canonical_classes parameters control what addresses are subject to sender_canonical_maps and recipient_canonical_maps mappings, respectively.

    Sender-specific rewriting is useful when you want to rewrite ugly sender addresses to pretty ones, and still want to be able to send mail to the those ugly address without creating a mailer loop.

    Canonical mapping can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

    Example:

    /etc/postfix/master.cf:
        :10026      inet  n       -       n       -       -       smtpd
            -o receive_override_options=no_address_mappings
    

    Note: do not specify whitespace around the "=" here.

    Address masquerading

    Address masquerading is a method to hide hosts inside a domain behind their mail gateway, and to make it appear as if the mail comes from the gateway itself, instead of from individual machines.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Address masquerading is disabled by default, and is implemented by the cleanup(8) server. To enable, edit the masquerade_domains parameter in the main.cf file and specify one or more domain names separated by whitespace or commas. When Postfix tries to masquerade a domain, it processes the list from left to right, and processing stops at the first match.

    Example:

    /etc/postfix/main.cf:
        masquerade_domains = foo.example.com example.com
    

    strips "any.thing.foo.example.com" to "foo.example.com", but strips "any.thing.else.example.com" to "example.com".

    A domain name prefixed with "!" means do not masquerade this domain or its subdomains:

    /etc/postfix/main.cf:
        masquerade_domains = !foo.example.com example.com
    

    does not change "any.thing.foo.example.com" and "foo.example.com", but strips "any.thing.else.example.com" to "example.com".

    The masquerade_exceptions configuration parameter specifies what user names should not be subjected to address masquerading. Specify one or more user names separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        masquerade_exceptions = root
    

    By default, Postfix makes no exceptions.

    Subtle point: by default, address masquerading is applied only to message headers and to envelope sender addresses, but not to envelope recipients. This allows you to use address masquerading on a mail gateway machine, while still being able to forward mail from outside to users on individual machines.

    In order to subject envelope recipient addresses to masquerading, too, specify (Postfix version 1.1 and later):

    /etc/postfix/main.cf:
        masquerade_classes = envelope_sender, envelope_recipient,
            header_sender, header_recipient
    

    If you rewrite the envelope recipient like this, Postfix will no longer be able to send mail to individual machines.

    Address masquerading can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

    Example:

    /etc/postfix/master.cf:
        :10026      inet  n       -       n       -       -       smtpd
            -o receive_override_options=no_address_mappings
    

    Note: do not specify whitespace around the "=" here.

    Automatic BCC recipients

    After applying the canonical and masquerade mappings, the cleanup(8) daemon can generate optional BCC (blind carbon-copy) recipients. Postfix provides three mechanisms:

    always_bcc = address
    Deliver a copy of all mail to the specified address. In Postfix versions before 2.1, this feature is implemented by smtpd(8), qmqpd(8), or pickup(8).
    sender_bcc_maps = type:table
    Search the specified "type:table" lookup table with the envelope sender address for an automatic BCC address. This feature is available in Postfix 2.1 and later.
    recipient_bcc_maps = type:table
    Search the specified "type:table" lookup table with the envelope recipient address for an automatic BCC address. This feature is available in Postfix 2.1 and later.

    Note: automatic BCC recipients are produced only for new mail. To avoid mailer loops, automatic BCC recipients are not generated for mail that Postfix forwards internally, nor for mail that Postfix generates itself.

    Automatic BCC recipients (including always_bcc) can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

    Example:

    /etc/postfix/master.cf:
        :10026      inet  n       -       n       -       -       smtpd
            -o receive_override_options=no_address_mappings
    

    Note: do not specify whitespace around the "=" here.

    Virtual aliasing

    Before writing the recipients to the queue file, the cleanup(8) daemon uses the optional virtual(5) alias tables to redirect mail for recipients. The mapping affects only envelope recipient addresses; it has no effect on message headers or envelope sender addresses. Virtual alias lookups are useful to redirect mail for virtual alias domains to real user mailboxes, and to redirect mail for domains that no longer exist. Virtual alias lookups can also be used to transform " Firstname.Lastname " back into UNIX login names, although it seems that local aliases may be a more appropriate vehicle. See the VIRTUAL_README document for an overview of methods to host virtual domains with Postfix.

    Virtual aliasing is disabled by default. To enable, edit the virtual_alias_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        virtual_alias_maps = hash:/etc/postfix/virtual
    
    /etc/postfix/virtual:
        Wietse.Venema        wietse
    

    Addresses found in virtual alias maps are subjected to another iteration of virtual aliasing, but are not subjected to canonical mapping, in order to avoid loops.

    For static mappings as shown above, lookup tables such as hash:, ldap:, mysql: or pgsql: are sufficient. For dynamic mappings you can use regular expression tables. This requires that you become intimately familiar with the ideas expressed in regexp_table(5), pcre_table(5) and virtual(5).

    Virtual aliasing can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

    Example:

    /etc/postfix/master.cf:
        :10026      inet  n       -       n       -       -       smtpd
            -o receive_override_options=no_address_mappings
    

    Note: do not specify whitespace around the "=" here.

    At this point the message is ready to be stored into the Postfix incoming queue.

    Address rewriting when mail is delivered

    The Postfix queue manager sorts mail according to its destination and gives it to Postfix delivery agents such as local(8), smtp(8), or lmtp(8). Just like the cleanup(8) server, the Postfix queue manager delegates the more complex address manipulations to the trivial-rewrite(8) server.

    Address manipulations at this stage are:

    Each Postfix delivery agent tries to deliver the mail to its destination, while encapsulating the sender, recipients, and message content according to the rules of the SMTP, LMTP, etc. protocol. When mail cannot be delivered, it is either returned to the sender or moved to the deferred queue and tried again later.

    Address manipulations when mail is delivered via the smtp(8) delivery agent:

    Address manipulations when mail is delivered via the local(8) delivery agent:

    The remainder of this document presents each address manipulation step in more detail, with specific examples or with pointers to documentation with examples.

    Resolve address to destination

    The Postfix qmgr(8) queue manager selects new mail from the incoming queue or old mail from the deferred queue, and asks the trivial-rewrite(8) address rewriting and resolving daemon where it should be delivered.

    As of version 2.0, Postfix distinguishes four major address classes. Each class has its own list of domain names, and each class has its own default delivery method, as shown in the table below. See the ADDRESS_CLASS_README document for the fine details. Postfix versions before 2.0 only distinguish between local delivery and everything else.

    Destination domain list Default delivery method Availability
    $mydestination, $inet_interfaces, $proxy_interfaces $local_transport Postfix 1.0
    $virtual_mailbox_domains $virtual_transport Postfix 2.0
    $relay_domains $relay_transport Postfix 2.0
    none $default_transport Postfix 1.0

    Mail transport switch

    Once the trivial-rewrite(8) daemon has determined a default delivery method it searches the optional transport(5) table for information that overrides the message destination and/or delivery method. Typical use of the transport(5) table is to send mail to a system that is not connected to the Internet, or to use a special SMTP client configuration for destinations that have special requirements. See, for example, the STANDARD_CONFIGURATION_README and UUCP_README documents, and the examples in the transport(5) manual page.

    Transport table lookups are disabled by default. To enable, edit the transport_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        transport_maps = hash:/etc/postfix/transport
    

    Relocated users table

    Next, the trivial-rewrite(8) address rewriting and resolving daemon runs each recipient through the relocated(5) database. This table provides information on how to reach users that no longer have an account, or what to do with mail for entire domains that no longer exist. When mail is sent to an address that is listed in this table, the message is returned to the sender with an informative message.

    The relocated(5) database is searched after transport(5) table lookups, in anticipation of transport(5) tables that can replace one recipient address by a different one.

    Lookups of relocated users are disabled by default. To enable, edit the relocated_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        relocated_maps = hash:/etc/postfix/relocated
    
    /etc/postfix/relocated:
        username@@example.com      otheruser@@elsewhere.tld
    

    As of Postfix version 2, mail for a relocated user will be rejected by the SMTP server with the reason "user has moved to otheruser@@elsewhere.tld". Older Postfix versions will receive the mail first, and then return it to the sender as undeliverable, with the same reason.

    Generic mapping for outgoing SMTP mail

    Some hosts have no valid Internet domain name, and instead use a name such as localdomain.local. This can be a problem when you want to send mail over the Internet, because many mail servers reject mail addresses with invalid domain names.

    With the smtp_generic_maps parameter you can specify generic(5) lookup tables that replace local mail addresses by valid Internet addresses when mail leaves the machine via SMTP. The generic(5) mapping replaces envelope and header addresses, and is non-recursive. It does not happen when you send mail between addresses on the local machine.

    This feature is available in Postfix version 2.2 and later.

    Example:

    /etc/postfix/main.cf:
        smtp_generic_maps = hash:/etc/postfix/generic
    
    /etc/postfix/generic:
        his@@localdomain.local		hisaccount@@hisisp.example
        her@@localdomain.local		heraccount@@herisp.example
        @@localdomain.local			hisaccount+local@@hisisp.example
    

    When mail is sent to a remote host via SMTP, this replaces his@@localdomain.local by his ISP mail address, replaces her@@localdomain.local by her ISP mail address, and replaces other local addresses by his ISP account, with an address extension of +local (this example assumes that the ISP supports "+" style address extensions).

    Local alias database

    When mail is to be delivered locally, the local(8) delivery agent runs each local recipient name through the aliases(5) database. The mapping does not affect addresses in message headers. Local aliases are typically used to implement distribution lists, or to direct mail for standard aliases such as postmaster to real people. The table can also be used to map "Firstname.Lastname" addresses to login names.

    Alias lookups are enabled by default. The default configuration depends on the operating system environment, but it is typically one of the following:

    /etc/postfix/main.cf:
        alias_maps = hash:/etc/aliases
        alias_maps = dbm:/etc/aliases, nis:mail.aliases
    

    The pathname of the alias database file is controlled with the alias_database configuration parameter. The value is system dependent. Usually it is one of the following:

    /etc/postfix/main.cf:
        alias_database = hash:/etc/aliases (4.4BSD, LINUX)
        alias_database = dbm:/etc/aliases (4.3BSD, SYSV<4)
        alias_database = dbm:/etc/mail/aliases (SYSV4)
    

    An aliases(5) file can specify that mail should be delivered to a local file, or to a command that receives the message in the standard input stream. For security reasons, deliveries to command and file destinations are performed with the rights of the alias database owner. A default userid, default_privs, is used for deliveries to commands or files in "root"-owned aliases.

    Local per-user .forward files

    With delivery via the local(8) deliver agent, users can control their own mail delivery by specifying destinations in a file called .forward in their home directories. The syntax of these files is the same as with the local aliases(5) file, except that the left-hand side of the alias (lookup key and colon) are not present.

    Local catch-all address

    When the local(8) delivery agent finds that a message recipient does not exist, the message is normally returned to the sender ("user unknown"). Sometimes it is desirable to forward mail for non-existing recipients to another machine. For this purpose you can specify an alternative destination with the luser_relay configuration parameter.

    Alternatively, mail for non-existent recipients can be delegated to an entirely different message transport, as specified with the fallback_transport configuration parameter. For details, see the local(8) delivery agent documentation.

    Note: if you use the luser_relay feature in order to receive mail for non-UNIX accounts, then you must specify:

    /etc/postfix/main.cf:
        local_recipient_maps =
    

    (i.e. empty) in the main.cf file, otherwise the Postfix SMTP server will reject mail for non-UNIX accounts with "User unknown in local recipient table". See the LOCAL_RECIPIENT_README file for more information on this.

    luser_relay can specify one address. It is subjected to "$name" expansions. Examples:

    $user@@other.host

    The bare username, without address extension, is prepended to "@@other.host". For example, mail for "username+foo" is sent to "username@@other.host".

    $local@@other.host

    The entire original recipient localpart, including address extension, is prepended to "@@other.host". For example, mail for "username+foo" is sent to "username+foo@@other.host".

    sysadmin+$user

    The bare username, without address extension, is appended to "sysadmin". For example, mail for "username+foo" is sent to "sysadmin+username".

    sysadmin+$local

    The entire original recipient localpart, including address extension, is appended to "sysadmin". For example, mail for "username+foo" is sent to "sysadmin+username+foo".

    Debugging your address manipulations

    Postfix version 2.1 and later can produce mail delivery reports for debugging purposes. These reports not only show sender/recipient addresses after address rewriting and alias expansion or forwarding, they also show information about delivery to mailbox, delivery to non-Postfix command, responses from remote SMTP servers, and so on.

    Postfix can produce two types of mail delivery reports for debugging:

    • What-if: report what would happen, but do not actually deliver mail. This mode of operation is requested with:

      $ /usr/sbin/sendmail -bv address...
      Mail Delivery Status Report will be mailed to <your login name>.
      
    • What happened: deliver mail and report successes and/or failures, including replies from remote SMTP servers. This mode of operation is requested with:

      $ /usr/sbin/sendmail -v address...
      Mail Delivery Status Report will be mailed to <your login name>.
      

    These reports contain information that is generated by Postfix delivery agents. Since these run as daemon processes and do not interact with users directly, the result is sent as mail to the sender of the test message. The format of these reports is practically identical to that of ordinary non-delivery notifications.

    As an example, below is the delivery report that is produced with the command "sendmail -bv postfix-users@@postfix.org". The first part of the report contains human-readable text. In this case, mail would be delivered via mail.cloud9.net, and the SMTP server replies with "250 Ok". Other reports may show delivery to mailbox, or delivery to non-Postfix command.

    Content-Description: Notification
    Content-Type: text/plain
    
    This is the mail system at host spike.porcupine.org.
    
    Enclosed is the mail delivery report that you requested.
    
                            The mail system
    
    <postfix-users@@postfix.org>: delivery via mail.cloud9.net[168.100.1.4]: 250 2.1.5 Ok
    

    The second part of the report is in machine-readable form, and includes the following information:

    • The envelope sender address (wietse@@porcupine.org).
    • The envelope recipient address (postfix-users@@postfix.org). If the recipient address was changed by Postfix then Postfix also includes the original recipient address.
    • The delivery status.

    Some details depend on Postfix version. The example below is for Postfix version 2.3 and later.

    Content-Description: Delivery report
    Content-Type: message/delivery-status
    
    Reporting-MTA: dns; spike.porcupine.org
    X-Postfix-Queue-ID: 84863BC0E5
    X-Postfix-Sender: rfc822; wietse@@porcupine.org
    Arrival-Date: Sun, 26 Nov 2006 17:01:01 -0500 (EST)
    
    Final-Recipient: rfc822; postfix-users@@postfix.org
    Action: deliverable
    Status: 2.1.5
    Remote-MTA: dns; mail.cloud9.net
    Diagnostic-Code: smtp; 250 2.1.5 Ok
    

    The third part of the report contains the message that Postfix would have delivered, including From: and To: message headers, so that you can see any effects of address rewriting on those. Mail submitted with "sendmail -bv" has no body content so none is shown in the example below.

    Content-Description: Message
    Content-Type: message/rfc822
    
    Received: by spike.porcupine.org (Postfix, from userid 1001)
            id 84863BC0E5; Sun, 26 Nov 2006 17:01:01 -0500 (EST)
    Subject: probe
    To: postfix-users@@postfix.org
    Message-Id: <20061126220101.84863BC0E5@@spike.porcupine.org>
    Date: Sun, 26 Nov 2006 17:01:01 -0500 (EST)
    From: wietse@@porcupine.org (Wietse Venema)
    
    @ 1.1.1.1.2.1 log @file ADDRESS_REWRITING_README.html was added on branch netbsd-5 on 2009-09-15 06:02:12 +0000 @ text @d1 1246 @ 1.1.1.1.2.2 log @Apply patch (requested by tron in ticket #944): Update Postfix to 2.6.5. @ text @a0 1246 Postfix Address Rewriting

    Postfix Address Rewriting


    Postfix address rewriting purpose

    Address rewriting is at the heart of the Postfix mail system. Postfix rewrites addresses for many different purposes. Some are merely cosmetic, and some are necessary to deliver correctly formatted mail to the correct destination. Examples of address rewriting in Postfix are:

    • Transform an incomplete address into a complete address. For example, transform "username" into "username@@example.com", or transform "username@@hostname" into "username@@hostname.example.com".

    • Replace an address by an equivalent address. For example, replace "username@@example.com" by "firstname.lastname@@example.com" when sending mail, and do the reverse transformation when receiving mail.

    • Replace an internal address by an external address. For example, replace "username@@localdomain.local" by "isp-account@@isp.example" when sending mail from a home computer to the Internet.

    • Replace an address by multiple addresses. For example, replace the address of an alias by the addresses listed under that alias.

    • Determine how and where to deliver mail for a specific address. For example, deliver mail for "username@@example.com" with the smtp(8) delivery agent, to the hosts that are listed in the DNS as the mail servers for the domain "example.com".

    Although Postfix currently has no address rewriting language, it can do surprisingly powerful address manipulation via table lookup. Postfix typically uses lookup tables with fixed strings to map one address to one or multiple addresses, and typically uses regular expressions to map multiple addresses to one or multiple addresses. Fixed-string lookup tables may be in the form of local files, or in the form of NIS, LDAP or SQL databases. The DATABASE_README document gives an introduction to Postfix lookup tables.

    Topics covered in this document:

    To rewrite message headers or not, or to label as invalid

    Postfix versions 2.1 and earlier always rewrite message header addresses, and append Postfix's own domain information to addresses that Postfix considers incomplete. While rewriting message header addresses is OK for mail with a local origin, it is undesirable for remote mail:

    • Message header address rewriting is frowned upon by mail standards,
    • Appending Postfix's own domain produces incorrect results with some incomplete addresses,
    • Appending Postfix's own domain sometimes creates the appearance that spam is sent by local users.

    Postfix versions 2.2 give you the option to either not rewrite message headers from remote SMTP clients at all, or to label incomplete addresses in such message headers as invalid. Here is how it works:

    • Postfix always rewrites message headers from local SMTP clients and from the Postfix sendmail command, and appends its own domain to incomplete addresses. The local_header_rewrite_clients parameter controls what SMTP clients Postfix considers local (by default, only local network interface addresses).
    • Postfix never rewrites message header addresses from remote SMTP clients when the remote_header_rewrite_domain parameter value is empty (the default setting).
    • Otherwise, Postfix rewrites message headers from remote SMTP clients, and appends the remote_header_rewrite_domain value to incomplete addresses. This feature can be used to append a reserved domain such as "domain.invalid", so that incomplete addresses cannot be mistaken for local addresses.

    Postfix address rewriting overview

    The figure below zooms in on those parts of Postfix that are most involved with address rewriting activity. See the OVERVIEW document for an overview of the complete Postfix architecture. Names followed by a number are Postfix daemon programs, while unnumbered names represent Postfix queues or internal sources of mail messages.

    trivial-
    rewrite(8)

    (std form)
    trivial-
    rewrite(8)

    (resolve)
    ^
    |
    |
    v
    ^
    |
    |
    v
    smtpd(8) >- cleanup(8) -> incoming -> active -> qmgr(8) -< smtp(8)
    qmqpd(8) lmtp(8)
    pickup(8) local(8)
    ^
    |
    ^
    |
    |
    v
    bounces
    forwarding
    notices
    deferred

    The table below summarizes all Postfix address manipulations. If you're reading this document for the first time, skip forward to "Address rewriting when mail is received". Once you've finished reading the remainder of this document, the table will help you to quickly find what you need.

    Address manipulation Scope Daemon Global turn-on control Selective turn-off control
    Rewrite addresses to standard form all mail trivial-
    rewrite(8)
    append_at_myorigin, append_dot_mydomain, swap_bangpath, allow_percent_hack local_header_rewrite_clients, remote_header_rewrite_domain
    Canonical address mapping all mail cleanup(8) canonical_maps receive_override_options, local_header_rewrite_clients, remote_header_rewrite_domain
    Address masquerading all mail cleanup(8) masquerade_domains receive_override_options, local_header_rewrite_clients, remote_header_rewrite_domain
    Automatic BCC recipients new mail cleanup(8) always_bcc, sender_bcc_maps, recipient_bcc_maps receive_override_options
    Virtual aliasing all mail cleanup(8) virtual_alias_maps receive_override_options
    Resolve address to destination all mail trivial-
    rewrite(8)
    none none
    Mail transport switch all mail trivial-
    rewrite(8)
    transport_maps none
    Relocated users table all mail trivial-
    rewrite(8)
    relocated_maps none
    Generic mapping table outgoing SMTP mail smtp(8) smtp_generic_maps none
    Local alias database local mail only local(8) alias_maps none
    Local per-user .forward files local mail only local(8) forward_path none
    Local catch-all address local mail only local(8) luser_relay none

    Address rewriting when mail is received

    The cleanup(8) server receives mail from outside of Postfix as well as mail from internal sources such as forwarded mail, undeliverable mail that is bounced to the sender, and postmaster notifications about problems with the mail system.

    The cleanup(8) server transforms the sender, recipients and message content into a standard form before writing it to an incoming queue file. The server cleans up sender and recipient addresses in message headers and in the envelope, adds missing message headers such as From: or Date: that are required by mail standards, and removes message headers such as Bcc: that should not be present. The cleanup(8) server delegates the more complex address manipulations to the trivial-rewrite(8) server as described later in this document.

    Address manipulations at this stage are:

    Rewrite addresses to standard form

    Before the cleanup(8) daemon runs an address through any address mapping lookup table, it first rewrites the address to the standard "user@@fully.qualified.domain" form, by sending the address to the trivial-rewrite(8) daemon. The purpose of rewriting to standard form is to reduce the number of entries needed in lookup tables.

    The Postfix trivial-rewrite(8) daemon implements the following hard-coded address manipulations:

    Rewrite "@@hosta,@@hostb:user@@site" to "user@@site"

    In case you wonder what this is, the address form above is called a route address, and specifies that mail for "user@@site" be delivered via "hosta" and "hostb". Usage of this form has been deprecated for a long time. Postfix has no ability to handle route addresses, other than to strip off the route part.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Rewrite "site!user" to "user@@site"

    This feature is controlled by the boolean swap_bangpath parameter (default: yes). The purpose is to rewrite UUCP-style addresses to domain style. This is useful only when you receive mail via UUCP, but it probably does not hurt otherwise.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Rewrite "user%domain" to "user@@domain"

    This feature is controlled by the boolean allow_percent_hack parameter (default: yes). Typically, this is used in order to deal with monstrosities such as "user%domain@@otherdomain".

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Rewrite "user" to "user@@$myorigin"

    This feature is controlled by the boolean append_at_myorigin parameter (default: yes). You should never turn off this feature, because a lot of Postfix components expect that all addresses have the form "user@@domain".

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter; otherwise they append the domain name specified with the remote_header_rewrite_domain configuration parameter, if one is specified. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    If your machine is not the main machine for $myorigin and you wish to have some users delivered locally without going via that main machine, make an entry in the virtual alias table that redirects "user@@$myorigin" to "user@@$myhostname". See also the "delivering some users locally" section in the STANDARD_CONFIGURATION_README document.

    Rewrite "user@@host" to "user@@host.$mydomain"

    This feature is controlled by the boolean append_dot_mydomain parameter (default: yes). The purpose is to get consistent treatment of different forms of the same hostname.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter; otherwise they append the domain name specified with the remote_header_rewrite_domain configuration parameter, if one is specified. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Some will argue that rewriting "host" to "host.domain" is bad. That is why it can be turned off. Others like the convenience of having Postfix's own domain appended automatically.

    Rewrite "user@@site." to "user@@site" (without the trailing dot).

    A single trailing dot is silently removed. However, an address that ends in multiple dots will be rejected as an invalid address.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Canonical address mapping

    The cleanup(8) daemon uses the canonical(5) tables to rewrite addresses in message envelopes and in message headers. By default all header and envelope addresses are rewritten; this is controlled with the canonical_classes configuration parameter.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Address rewriting is done for local and remote addresses. The mapping is useful to replace login names by "Firstname.Lastname" style addresses, or to clean up invalid domains in mail addresses produced by legacy mail systems.

    Canonical mapping is disabled by default. To enable, edit the canonical_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        canonical_maps = hash:/etc/postfix/canonical
    
    /etc/postfix/canonical:
        wietse        Wietse.Venema
    

    For static mappings as shown above, lookup tables such as hash:, ldap:, mysql: or pgsql: are sufficient. For dynamic mappings you can use regular expression tables. This requires that you become intimately familiar with the ideas expressed in regexp_table(5), pcre_table(5) and canonical(5).

    In addition to the canonical maps which are applied to both sender and recipient addresses, you can specify canonical maps that are applied only to sender addresses or to recipient addresses.

    Example:

    /etc/postfix/main.cf:
        sender_canonical_maps = hash:/etc/postfix/sender_canonical
        recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
    

    The sender and recipient canonical maps are applied before the common canonical maps. The sender_canonical_classes and recipient_canonical_classes parameters control what addresses are subject to sender_canonical_maps and recipient_canonical_maps mappings, respectively.

    Sender-specific rewriting is useful when you want to rewrite ugly sender addresses to pretty ones, and still want to be able to send mail to the those ugly address without creating a mailer loop.

    Canonical mapping can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

    Example:

    /etc/postfix/master.cf:
        :10026      inet  n       -       n       -       -       smtpd
            -o receive_override_options=no_address_mappings
    

    Note: do not specify whitespace around the "=" here.

    Address masquerading

    Address masquerading is a method to hide hosts inside a domain behind their mail gateway, and to make it appear as if the mail comes from the gateway itself, instead of from individual machines.

    NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".

    Address masquerading is disabled by default, and is implemented by the cleanup(8) server. To enable, edit the masquerade_domains parameter in the main.cf file and specify one or more domain names separated by whitespace or commas. When Postfix tries to masquerade a domain, it processes the list from left to right, and processing stops at the first match.

    Example:

    /etc/postfix/main.cf:
        masquerade_domains = foo.example.com example.com
    

    strips "any.thing.foo.example.com" to "foo.example.com", but strips "any.thing.else.example.com" to "example.com".

    A domain name prefixed with "!" means do not masquerade this domain or its subdomains:

    /etc/postfix/main.cf:
        masquerade_domains = !foo.example.com example.com
    

    does not change "any.thing.foo.example.com" and "foo.example.com", but strips "any.thing.else.example.com" to "example.com".

    The masquerade_exceptions configuration parameter specifies what user names should not be subjected to address masquerading. Specify one or more user names separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        masquerade_exceptions = root
    

    By default, Postfix makes no exceptions.

    Subtle point: by default, address masquerading is applied only to message headers and to envelope sender addresses, but not to envelope recipients. This allows you to use address masquerading on a mail gateway machine, while still being able to forward mail from outside to users on individual machines.

    In order to subject envelope recipient addresses to masquerading, too, specify (Postfix version 1.1 and later):

    /etc/postfix/main.cf:
        masquerade_classes = envelope_sender, envelope_recipient,
            header_sender, header_recipient
    

    If you rewrite the envelope recipient like this, Postfix will no longer be able to send mail to individual machines.

    Address masquerading can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

    Example:

    /etc/postfix/master.cf:
        :10026      inet  n       -       n       -       -       smtpd
            -o receive_override_options=no_address_mappings
    

    Note: do not specify whitespace around the "=" here.

    Automatic BCC recipients

    After applying the canonical and masquerade mappings, the cleanup(8) daemon can generate optional BCC (blind carbon-copy) recipients. Postfix provides three mechanisms:

    always_bcc = address
    Deliver a copy of all mail to the specified address. In Postfix versions before 2.1, this feature is implemented by smtpd(8), qmqpd(8), or pickup(8).
    sender_bcc_maps = type:table
    Search the specified "type:table" lookup table with the envelope sender address for an automatic BCC address. This feature is available in Postfix 2.1 and later.
    recipient_bcc_maps = type:table
    Search the specified "type:table" lookup table with the envelope recipient address for an automatic BCC address. This feature is available in Postfix 2.1 and later.

    Note: automatic BCC recipients are produced only for new mail. To avoid mailer loops, automatic BCC recipients are not generated for mail that Postfix forwards internally, nor for mail that Postfix generates itself.

    Automatic BCC recipients (including always_bcc) can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

    Example:

    /etc/postfix/master.cf:
        :10026      inet  n       -       n       -       -       smtpd
            -o receive_override_options=no_address_mappings
    

    Note: do not specify whitespace around the "=" here.

    Virtual aliasing

    Before writing the recipients to the queue file, the cleanup(8) daemon uses the optional virtual(5) alias tables to redirect mail for recipients. The mapping affects only envelope recipient addresses; it has no effect on message headers or envelope sender addresses. Virtual alias lookups are useful to redirect mail for virtual alias domains to real user mailboxes, and to redirect mail for domains that no longer exist. Virtual alias lookups can also be used to transform " Firstname.Lastname " back into UNIX login names, although it seems that local aliases may be a more appropriate vehicle. See the VIRTUAL_README document for an overview of methods to host virtual domains with Postfix.

    Virtual aliasing is disabled by default. To enable, edit the virtual_alias_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        virtual_alias_maps = hash:/etc/postfix/virtual
    
    /etc/postfix/virtual:
        Wietse.Venema        wietse
    

    Addresses found in virtual alias maps are subjected to another iteration of virtual aliasing, but are not subjected to canonical mapping, in order to avoid loops.

    For static mappings as shown above, lookup tables such as hash:, ldap:, mysql: or pgsql: are sufficient. For dynamic mappings you can use regular expression tables. This requires that you become intimately familiar with the ideas expressed in regexp_table(5), pcre_table(5) and virtual(5).

    Virtual aliasing can be turned off selectively for mail received by smtpd(8), qmqpd(8), or pickup(8), by overriding main.cf settings in the master.cf file. This feature is available in Postfix version 2.1 and later.

    Example:

    /etc/postfix/master.cf:
        :10026      inet  n       -       n       -       -       smtpd
            -o receive_override_options=no_address_mappings
    

    Note: do not specify whitespace around the "=" here.

    At this point the message is ready to be stored into the Postfix incoming queue.

    Address rewriting when mail is delivered

    The Postfix queue manager sorts mail according to its destination and gives it to Postfix delivery agents such as local(8), smtp(8), or lmtp(8). Just like the cleanup(8) server, the Postfix queue manager delegates the more complex address manipulations to the trivial-rewrite(8) server.

    Address manipulations at this stage are:

    Each Postfix delivery agent tries to deliver the mail to its destination, while encapsulating the sender, recipients, and message content according to the rules of the SMTP, LMTP, etc. protocol. When mail cannot be delivered, it is either returned to the sender or moved to the deferred queue and tried again later.

    Address manipulations when mail is delivered via the smtp(8) delivery agent:

    Address manipulations when mail is delivered via the local(8) delivery agent:

    The remainder of this document presents each address manipulation step in more detail, with specific examples or with pointers to documentation with examples.

    Resolve address to destination

    The Postfix qmgr(8) queue manager selects new mail from the incoming queue or old mail from the deferred queue, and asks the trivial-rewrite(8) address rewriting and resolving daemon where it should be delivered.

    As of version 2.0, Postfix distinguishes four major address classes. Each class has its own list of domain names, and each class has its own default delivery method, as shown in the table below. See the ADDRESS_CLASS_README document for the fine details. Postfix versions before 2.0 only distinguish between local delivery and everything else.

    Destination domain list Default delivery method Availability
    $mydestination, $inet_interfaces, $proxy_interfaces $local_transport Postfix 1.0
    $virtual_mailbox_domains $virtual_transport Postfix 2.0
    $relay_domains $relay_transport Postfix 2.0
    none $default_transport Postfix 1.0

    Mail transport switch

    Once the trivial-rewrite(8) daemon has determined a default delivery method it searches the optional transport(5) table for information that overrides the message destination and/or delivery method. Typical use of the transport(5) table is to send mail to a system that is not connected to the Internet, or to use a special SMTP client configuration for destinations that have special requirements. See, for example, the STANDARD_CONFIGURATION_README and UUCP_README documents, and the examples in the transport(5) manual page.

    Transport table lookups are disabled by default. To enable, edit the transport_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        transport_maps = hash:/etc/postfix/transport
    

    Relocated users table

    Next, the trivial-rewrite(8) address rewriting and resolving daemon runs each recipient through the relocated(5) database. This table provides information on how to reach users that no longer have an account, or what to do with mail for entire domains that no longer exist. When mail is sent to an address that is listed in this table, the message is returned to the sender with an informative message.

    The relocated(5) database is searched after transport(5) table lookups, in anticipation of transport(5) tables that can replace one recipient address by a different one.

    Lookups of relocated users are disabled by default. To enable, edit the relocated_maps parameter in the main.cf file and specify one or more lookup tables, separated by whitespace or commas.

    Example:

    /etc/postfix/main.cf:
        relocated_maps = hash:/etc/postfix/relocated
    
    /etc/postfix/relocated:
        username@@example.com      otheruser@@elsewhere.tld
    

    As of Postfix version 2, mail for a relocated user will be rejected by the SMTP server with the reason "user has moved to otheruser@@elsewhere.tld". Older Postfix versions will receive the mail first, and then return it to the sender as undeliverable, with the same reason.

    Generic mapping for outgoing SMTP mail

    Some hosts have no valid Internet domain name, and instead use a name such as localdomain.local. This can be a problem when you want to send mail over the Internet, because many mail servers reject mail addresses with invalid domain names.

    With the smtp_generic_maps parameter you can specify generic(5) lookup tables that replace local mail addresses by valid Internet addresses when mail leaves the machine via SMTP. The generic(5) mapping replaces envelope and header addresses, and is non-recursive. It does not happen when you send mail between addresses on the local machine.

    This feature is available in Postfix version 2.2 and later.

    Example:

    /etc/postfix/main.cf:
        smtp_generic_maps = hash:/etc/postfix/generic
    
    /etc/postfix/generic:
        his@@localdomain.local		hisaccount@@hisisp.example
        her@@localdomain.local		heraccount@@herisp.example
        @@localdomain.local			hisaccount+local@@hisisp.example
    

    When mail is sent to a remote host via SMTP, this replaces his@@localdomain.local by his ISP mail address, replaces her@@localdomain.local by her ISP mail address, and replaces other local addresses by his ISP account, with an address extension of +local (this example assumes that the ISP supports "+" style address extensions).

    Local alias database

    When mail is to be delivered locally, the local(8) delivery agent runs each local recipient name through the aliases(5) database. The mapping does not affect addresses in message headers. Local aliases are typically used to implement distribution lists, or to direct mail for standard aliases such as postmaster to real people. The table can also be used to map "Firstname.Lastname" addresses to login names.

    Alias lookups are enabled by default. The default configuration depends on the operating system environment, but it is typically one of the following:

    /etc/postfix/main.cf:
        alias_maps = hash:/etc/aliases
        alias_maps = dbm:/etc/aliases, nis:mail.aliases
    

    The pathname of the alias database file is controlled with the alias_database configuration parameter. The value is system dependent. Usually it is one of the following:

    /etc/postfix/main.cf:
        alias_database = hash:/etc/aliases (4.4BSD, LINUX)
        alias_database = dbm:/etc/aliases (4.3BSD, SYSV<4)
        alias_database = dbm:/etc/mail/aliases (SYSV4)
    

    An aliases(5) file can specify that mail should be delivered to a local file, or to a command that receives the message in the standard input stream. For security reasons, deliveries to command and file destinations are performed with the rights of the alias database owner. A default userid, default_privs, is used for deliveries to commands or files in "root"-owned aliases.

    Local per-user .forward files

    With delivery via the local(8) deliver agent, users can control their own mail delivery by specifying destinations in a file called .forward in their home directories. The syntax of these files is the same as with the local aliases(5) file, except that the left-hand side of the alias (lookup key and colon) are not present.

    Local catch-all address

    When the local(8) delivery agent finds that a message recipient does not exist, the message is normally returned to the sender ("user unknown"). Sometimes it is desirable to forward mail for non-existing recipients to another machine. For this purpose you can specify an alternative destination with the luser_relay configuration parameter.

    Alternatively, mail for non-existent recipients can be delegated to an entirely different message transport, as specified with the fallback_transport configuration parameter. For details, see the local(8) delivery agent documentation.

    Note: if you use the luser_relay feature in order to receive mail for non-UNIX accounts, then you must specify:

    /etc/postfix/main.cf:
        local_recipient_maps =
    

    (i.e. empty) in the main.cf file, otherwise the Postfix SMTP server will reject mail for non-UNIX accounts with "User unknown in local recipient table". See the LOCAL_RECIPIENT_README file for more information on this.

    luser_relay can specify one address. It is subjected to "$name" expansions. Examples:

    $user@@other.host

    The bare username, without address extension, is prepended to "@@other.host". For example, mail for "username+foo" is sent to "username@@other.host".

    $local@@other.host

    The entire original recipient localpart, including address extension, is prepended to "@@other.host". For example, mail for "username+foo" is sent to "username+foo@@other.host".

    sysadmin+$user

    The bare username, without address extension, is appended to "sysadmin". For example, mail for "username+foo" is sent to "sysadmin+username".

    sysadmin+$local

    The entire original recipient localpart, including address extension, is appended to "sysadmin". For example, mail for "username+foo" is sent to "sysadmin+username+foo".

    Debugging your address manipulations

    Postfix version 2.1 and later can produce mail delivery reports for debugging purposes. These reports not only show sender/recipient addresses after address rewriting and alias expansion or forwarding, they also show information about delivery to mailbox, delivery to non-Postfix command, responses from remote SMTP servers, and so on.

    Postfix can produce two types of mail delivery reports for debugging:

    • What-if: report what would happen, but do not actually deliver mail. This mode of operation is requested with:

      $ /usr/sbin/sendmail -bv address...
      Mail Delivery Status Report will be mailed to <your login name>.
      
    • What happened: deliver mail and report successes and/or failures, including replies from remote SMTP servers. This mode of operation is requested with:

      $ /usr/sbin/sendmail -v address...
      Mail Delivery Status Report will be mailed to <your login name>.
      

    These reports contain information that is generated by Postfix delivery agents. Since these run as daemon processes and do not interact with users directly, the result is sent as mail to the sender of the test message. The format of these reports is practically identical to that of ordinary non-delivery notifications.

    As an example, below is the delivery report that is produced with the command "sendmail -bv postfix-users@@postfix.org". The first part of the report contains human-readable text. In this case, mail would be delivered via mail.cloud9.net, and the SMTP server replies with "250 Ok". Other reports may show delivery to mailbox, or delivery to non-Postfix command.

    Content-Description: Notification
    Content-Type: text/plain
    
    This is the mail system at host spike.porcupine.org.
    
    Enclosed is the mail delivery report that you requested.
    
                            The mail system
    
    <postfix-users@@postfix.org>: delivery via mail.cloud9.net[168.100.1.4]: 250 2.1.5 Ok
    

    The second part of the report is in machine-readable form, and includes the following information:

    • The envelope sender address (wietse@@porcupine.org).
    • The envelope recipient address (postfix-users@@postfix.org). If the recipient address was changed by Postfix then Postfix also includes the original recipient address.
    • The delivery status.

    Some details depend on Postfix version. The example below is for Postfix version 2.3 and later.

    Content-Description: Delivery report
    Content-Type: message/delivery-status
    
    Reporting-MTA: dns; spike.porcupine.org
    X-Postfix-Queue-ID: 84863BC0E5
    X-Postfix-Sender: rfc822; wietse@@porcupine.org
    Arrival-Date: Sun, 26 Nov 2006 17:01:01 -0500 (EST)
    
    Final-Recipient: rfc822; postfix-users@@postfix.org
    Action: deliverable
    Status: 2.1.5
    Remote-MTA: dns; mail.cloud9.net
    Diagnostic-Code: smtp; 250 2.1.5 Ok
    

    The third part of the report contains the message that Postfix would have delivered, including From: and To: message headers, so that you can see any effects of address rewriting on those. Mail submitted with "sendmail -bv" has no body content so none is shown in the example below.

    Content-Description: Message
    Content-Type: message/rfc822
    
    Received: by spike.porcupine.org (Postfix, from userid 1001)
            id 84863BC0E5; Sun, 26 Nov 2006 17:01:01 -0500 (EST)
    Subject: probe
    To: postfix-users@@postfix.org
    Message-Id: <20061126220101.84863BC0E5@@spike.porcupine.org>
    Date: Sun, 26 Nov 2006 17:01:01 -0500 (EST)
    From: wietse@@porcupine.org (Wietse Venema)
    
    @ 1.1.1.1.2.3 log @Pull up following revision(s) (requested by tron in ticket #1425): Update Postfix to version 2.7.1: - Improved before-queue content filter performance. With "smtpd_proxy_options = speed_adjust", the Postfix SMTP server receives the entire message before it connects to a before-queue content filter. Typically, this allows Postfix to handle the same mail load with fewer content filter processes. - Improved address verification performance. The verify database is now persistent by default, and it is automatically cleaned periodically. Under overload conditions, the Postfix SMTP server no longer waits up to 6 seconds for an address probe to complete. - Support for reputation management based on the local SMTP client IP address. This is typically implemented with "FILTER transportname:" actions in access maps or header/body checks, and mail delivery transports in master.cf with unique smtp_bind_address values. @ text @d605 1 a605 1 127.0.0.1:10026 inet n - n - - smtpd d704 1 a704 1 127.0.0.1:10026 inet n - n - - smtpd d754 1 a754 1 127.0.0.1:10026 inet n - n - - smtpd d788 1 a788 1 /etc/postfix/virtual: d813 1 a813 1 127.0.0.1:10026 inet n - n - - smtpd @