Sync usage with man page.
[netbsd-mini2440.git] / external / ibm-public / postfix / dist / README_FILES / SMTPD_ACCESS_README
blobf2c1c45791d44e8d23b8279010fa6ed9bf45c3fe
1 P\bPo\bos\bst\btf\bfi\bix\bx S\bSM\bMT\bTP\bP r\bre\bel\bla\bay\by a\ban\bnd\bd a\bac\bcc\bce\bes\bss\bs c\bco\bon\bnt\btr\bro\bol\bl
3 -------------------------------------------------------------------------------
5 I\bIn\bnt\btr\bro\bod\bdu\buc\bct\bti\bio\bon\bn
7 The Postfix SMTP server receives mail from the network and is exposed to the
8 big bad world of junk email and viruses. This document introduces the built-in
9 and external methods that control what SMTP mail Postfix will accept, what
10 mistakes to avoid, and how to test your configuration.
12 Topics covered in this document:
14   * Relay control, junk mail control, and per-user policies
15   * Restrictions that apply to all SMTP mail
16   * Getting selective with SMTP access restriction lists
17   * Delayed evaluation of SMTP access restriction lists
18   * Dangerous use of smtpd_recipient_restrictions
19   * SMTP access rule testing
21 R\bRe\bel\bla\bay\by c\bco\bon\bnt\btr\bro\bol\bl,\b, j\bju\bun\bnk\bk m\bma\bai\bil\bl c\bco\bon\bnt\btr\bro\bol\bl,\b, a\ban\bnd\bd p\bpe\ber\br-\b-u\bus\bse\ber\br p\bpo\bol\bli\bic\bci\bie\bes\bs
23 In a distant past, the Internet was a friendly environment. Mail servers
24 happily forwarded mail on behalf of anyone towards any destination. On today's
25 Internet, spammers abuse servers that forward mail from arbitrary systems, and
26 abused systems end up on anti-spammer blacklists. See, for example, the
27 information on http://www.mail-abuse.org/ and other websites.
29 By default, Postfix has a moderately restrictive approach to mail relaying.
30 Postfix forwards mail only from clients in trusted networks, or to domains that
31 are configured as authorized relay destinations. For a description of the
32 default policy, see the smtpd_recipient_restrictions parameter in the postconf
33 (5) manual page, and the information that is referenced from there.
35 Most of the Postfix SMTP server access controls are targeted at stopping junk
36 email.
38   * Protocol oriented: some SMTP server access controls block mail by being
39     very strict with respect to the SMTP protocol; these catch poorly
40     implemented and/or poorly configured junk email software, as well as email
41     worms that come with their own non-standard SMTP client implementations.
42     Protocol-oriented access controls become less useful over time as spammers
43     and worm writers learn to read RFC documents.
45   * Blacklist oriented: some SMTP server access controls query blacklists with
46     known to be bad sites such as open mail relays, open web proxies, and home
47     computers that have been compromised and that are under remote control by
48     criminals. The effectiveness of these blacklists depends on how complete
49     and how up to date they are.
51   * Threshold oriented: some SMTP server access controls attempt to raise the
52     bar by either making the client do more work (greylisting) or by asking for
53     a second opinion (SPF and sender/recipient address verification). The
54     greylisting and SPF policies are implemented externally, and are the
55     subject of the SMTPD_POLICY_README document. Sender/recipient address
56     verification is the subject of the ADDRESS_VERIFICATION_README document.
58 Unfortunately, all junk mail controls have the possibility of falsely rejecting
59 legitimate mail. This can be a problem for sites with many different types of
60 users. For some users it is unacceptable when any junk email slips through,
61 while for other users the world comes to an end when a single legitimate email
62 message is blocked. Because there is no single policy that is "right" for all
63 users, Postfix supports different SMTP access restrictions for different users.
64 This is described in the RESTRICTION_CLASS_README document.
66 R\bRe\bes\bst\btr\bri\bic\bct\bti\bio\bon\bns\bs t\bth\bha\bat\bt a\bap\bpp\bpl\bly\by t\bto\bo a\bal\bll\bl S\bSM\bMT\bTP\bP m\bma\bai\bil\bl
68 Besides the restrictions that can be made configurable per client or per user
69 as described in the next section, Postfix implements a few restrictions that
70 apply to all SMTP mail.
72   * The built-in header_checks and body_checks content restrictions, as
73     described in the BUILTIN_FILTER_README document. This happens while Postfix
74     receives mail, before it is stored in the incoming queue.
76   * The external before-queue content restrictions, as described in the
77     SMTPD_PROXY_README document. This happens while Postfix receives mail,
78     before it is stored in the incoming queue.
80   * Requiring that the client sends the HELO or EHLO command before sending the
81     MAIL FROM or ETRN command. This may cause problems with home-grown
82     applications that send mail. For this reason, the requirement is disabled
83     by default ("smtpd_helo_required = no").
85   * Disallowing illegal syntax in MAIL FROM or RCPT TO commands. This may cause
86     problems with home-grown applications that send mail, and with ancient PC
87     mail clients. For this reason, the requirement is disabled by default
88     ("strict_rfc821_envelopes = no").
90       o Disallowing RFC 822 address syntax (example: "MAIL FROM: the dude
91         <dude@example.com>").
93       o Disallowing addresses that are not enclosed with <> (example: "MAIL
94         FROM: dude@example.com").
96   * Rejecting mail from a non-existent sender address. This form of egress
97     filtering helps to slow down worms and other malware, but may cause
98     problems with home-grown software that sends out mail software with an
99     unreplyable address. For this reason the requirement is disabled by default
100     ("smtpd_reject_unlisted_sender = no").
102   * Rejecting mail for a non-existent recipient address. This form of ingress
103     filtering helps to keep the mail queue free of undeliverable MAILER-DAEMON
104     messages. This requirement is enabled by default
105     ("smtpd_reject_unlisted_recipient = yes").
107 G\bGe\bet\btt\bti\bin\bng\bg s\bse\bel\ble\bec\bct\bti\biv\bve\be w\bwi\bit\bth\bh S\bSM\bMT\bTP\bP a\bac\bcc\bce\bes\bss\bs r\bre\bes\bst\btr\bri\bic\bct\bti\bio\bon\bn l\bli\bis\bst\bts\bs
109 Postfix allows you to specify lists of access restrictions for each stage of
110 the SMTP conversation. Individual restrictions are described in the postconf(5)
111 manual page.
113 Examples of simple restriction lists are:
115 /etc/postfix/main.cf:
116     # Allow connections from trusted networks only.
117     smtpd_client_restrictions = permit_mynetworks, reject
119     # Don't talk to mail systems that don't know their own hostname.
120     # With Postfix < 2.3, specify reject_unknown_hostname.
121     smtpd_helo_restrictions = reject_unknown_helo_hostname
123     # Don't accept mail from domains that don't exist.
124     smtpd_sender_restrictions = reject_unknown_sender_domain
126     # Whitelisting: local clients may specify any destination domain.
127     smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
129     # Block clients that speak too early.
130     smtpd_data_restrictions = reject_unauth_pipelining
132     # Enforce mail volume quota via policy service callouts.
133     smtpd_end_of_data_restrictions = check_policy_service unix:private/policy
135 Each restriction list is evaluated from left to right until some restriction
136 produces a result of PERMIT, REJECT or DEFER (try again later). The end of the
137 list is equivalent to a PERMIT result. By placing a PERMIT restriction before a
138 REJECT restriction you can make exceptions for specific clients or users. This
139 is called whitelisting; the fourth example above allows mail from local
140 networks but otherwise rejects mail to arbitrary destinations.
142 The table below summarizes the purpose of each SMTP access restriction list.
143 All lists use the exact same syntax; they differ only in the time of evaluation
144 and in the effect of a REJECT or DEFER result.
146      _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b 
147     |R\bRe\bes\bst\btr\bri\bic\bct\bti\bio\bon\bn l\bli\bis\bst\bt n\bna\bam\bme\be         |S\bSt\bta\bat\btu\bus\bs  |E\bEf\bff\bfe\bec\bct\bt o\bof\bf R\bRE\bEJ\bJE\bEC\bCT\bT o\bor\br D\bDE\bEF\bFE\bER\bR r\bre\bes\bsu\bul\blt\bt|
148     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
149     |smtpd_client_restrictions     |Optional|Reject all client commands      |
150     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
151     |smtpd_helo_restrictions       |Optional|Reject HELO/EHLO information    |
152     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
153     |smtpd_sender_restrictions     |Optional|Reject MAIL FROM information    |
154     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
155     |smtpd_recipient_restrictions  |Required|Reject RCPT TO information      |
156     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
157     |smtpd_data_restrictions       |Optional|Reject DATA command             |
158     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
159     |smtpd_end_of_data_restrictions|Optional|Reject END-OF-DATA command      |
160     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
161     |smtpd_etrn_restrictions       |Optional|Reject ETRN command             |
162     |_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
164 D\bDe\bel\bla\bay\bye\bed\bd e\bev\bva\bal\blu\bua\bat\bti\bio\bon\bn o\bof\bf S\bSM\bMT\bTP\bP a\bac\bcc\bce\bes\bss\bs r\bre\bes\bst\btr\bri\bic\bct\bti\bio\bon\bn l\bli\bis\bst\bts\bs
166 Early Postfix versions evaluated SMTP access restrictions lists as early as
167 possible. The client restriction list was evaluated before Postfix sent the
168 "220 $myhostname..." greeting banner to the SMTP client, the helo restriction
169 list was evaluated before Postfix replied to the HELO (EHLO) command, the
170 sender restriction list was evaluated before Postfix replied to the MAIL FROM
171 command, and so on. This approach turned out to be difficult to use.
173 Current Postfix versions postpone the evaluation of client, helo and sender
174 restriction lists until the RCPT TO or ETRN command. This behavior is
175 controlled by the smtpd_delay_reject parameter. Restriction lists are still
176 evaluated in the proper order of (client, helo, etrn) or (client, helo, sender,
177 recipient, data, or end-of-data) restrictions. When a restriction list
178 (example: client) evaluates to REJECT or DEFER the other restriction lists
179 (example: helo, sender, etc.) are skipped.
181 Around the time that smtpd_delay_reject was introduced, Postfix was also
182 changed to support mixed restriction lists that combine information about the
183 client, helo, sender and recipient or etrn command.
185 Benefits of delayed restriction evaluation, and of restriction mixing:
187   * Some SMTP clients do not expect a negative reply early in the SMTP session.
188     When the bad news is postponed until the RCPT TO reply, the client goes
189     away as it is supposed to, instead of hanging around until a timeout
190     happens, or worse, going into an endless connect-reject-connect loop.
192   * Postfix can log more useful information. For example, when Postfix rejects
193     a client name or address and delays the action until the RCPT TO command,
194     it can log the sender and the recipient address. This is more useful than
195     logging only the client hostname and IP address and not knowing whose mail
196     was being blocked.
198   * Mixing is needed for complex whitelisting policies. For example, in order
199     to reject local sender addresses in mail from non-local clients, you need
200     to be able to mix restrictions on client information with restrictions on
201     sender information in the same restriction list. Without this ability, many
202     per-user access restrictions would be impossible to express.
204 D\bDa\ban\bng\bge\ber\bro\bou\bus\bs u\bus\bse\be o\bof\bf s\bsm\bmt\btp\bpd\bd_\b_r\bre\bec\bci\bip\bpi\bie\ben\bnt\bt_\b_r\bre\bes\bst\btr\bri\bic\bct\bti\bio\bon\bns\bs
206 By now the reader may wonder why we need smtpd client, helo or sender
207 restrictions, when their evaluation is postponed until the RCPT TO or ETRN
208 command. Some people recommend placing ALL the access restrictions in the
209 smtpd_recipient_restrictions list. Unfortunately, this can result in too
210 permissive access. How is this possible?
212 The purpose of the smtpd_recipient_restrictions feature is to control how
213 Postfix replies to the RCPT TO command. If the restriction list evaluates to
214 REJECT or DEFER, the recipient address is rejected; no surprises here. If the
215 result is PERMIT, then the recipient address is accepted. And this is where
216 surprises can happen.
218 Here is an example that shows when a PERMIT result can result in too much
219 access permission:
221 1 /etc/postfix/main.cf:
222 2     smtpd_recipient_restrictions =
223 3         permit_mynetworks
224 4         check_helo_access hash:/etc/postfix/helo_access
225 5         reject_unknown_helo_hostname
226 6         reject_unauth_destination
228 8 /etc/postfix/helo_access:
229 9     localhost.localdomain PERMIT
231 Line 5 rejects mail from hosts that don't specify a proper hostname in the HELO
232 command (with Postfix < 2.3, specify reject_unknown_hostname). Lines 4 and 9
233 make an exception to allow mail from some machine that announces itself with
234 "HELO localhost.localdomain".
236 The problem with this configuration is that smtpd_recipient_restrictions
237 evaluates to PERMIT for EVERY host that announces itself as
238 "localhost.localdomain", making Postfix an open relay for all such hosts.
240 In order to avoid surprises like these with smtpd_recipient_restrictions, you
241 should place non-recipient restrictions AFTER the reject_unauth_destination
242 restriction, not before. In the above example, the HELO based restrictions
243 should be placed AFTER reject_unauth_destination, or better, the HELO based
244 restrictions should be placed under smtpd_helo_restrictions where they can do
245 no harm.
247 S\bSM\bMT\bTP\bP a\bac\bcc\bce\bes\bss\bs r\bru\bul\ble\be t\bte\bes\bst\bti\bin\bng\bg
249 Postfix has several features that aid in SMTP access rule testing:
251 soft_bounce
252     This is a safety net that changes SMTP server REJECT actions into DEFER
253     (try again later) actions. This keeps mail queued that would otherwise be
254     returned to the sender. Specify "soft_bounce = yes" in the main.cf file to
255     prevent the Postfix SMTP server from rejecting mail permanently, by
256     changing all 5xx SMTP reply codes into 4xx.
258 warn_if_reject
259     This is a different safety net that changes SMTP server REJECT actions into
260     warnings. Instead of rejecting a command, Postfix logs what it would
261     reject. Specify "warn_if_reject" in an SMTP access restriction list, before
262     the restriction that you want to test without actually rejecting mail.
264 XCLIENT
265     With this Postfix 2.1 feature, authorized SMTP clients can impersonate
266     other systems, so that you can do realistic SMTP access rule tests.
267     Examples of how to impersonate other systems for access rule testing are
268     given at the end of the XCLIENT_README document.