1# ACCESS(5)                                                            ACCESS(5)
2# 
3# NAME
4#        access - Postfix SMTP server access table
5# 
6# SYNOPSIS
7#        postmap /etc/postfix/access
8# 
9#        postmap -q "string" /etc/postfix/access
10# 
11#        postmap -q - /etc/postfix/access <inputfile
12# 
13# DESCRIPTION
14#        This  document  describes  access  control  on remote SMTP
15#        client information: host  names,  network  addresses,  and
16#        envelope  sender or recipient addresses; it is implemented
17#        by the  Postfix  SMTP  server.   See  header_checks(5)  or
18#        body_checks(5)  for access control on the content of email
19#        messages.
20# 
21#        Normally, the access(5) table is specified as a text  file
22#        that  serves  as  input  to  the  postmap(1) command.  The
23#        result, an indexed file in dbm or db format, is  used  for
24#        fast  searching  by  the  mail system. Execute the command
25#        "postmap /etc/postfix/access" to rebuild an  indexed  file
26#        after changing the corresponding text file.
27# 
28#        When  the  table  is provided via other means such as NIS,
29#        LDAP or SQL, the same lookups are  done  as  for  ordinary
30#        indexed files.
31# 
32#        Alternatively,  the  table  can  be provided as a regular-
33#        expression map where patterns are given as regular expres-
34#        sions,  or lookups can be directed to TCP-based server. In
35#        those cases, the lookups are done in a slightly  different
36#        way  as  described below under "REGULAR EXPRESSION TABLES"
37#        or "TCP-BASED TABLES".
38# 
39# CASE FOLDING
40#        The search string is folded to lowercase  before  database
41#        lookup.  As  of Postfix 2.3, the search string is not case
42#        folded with database types such as regexp: or pcre:  whose
43#        lookup fields can match both upper and lower case.
44# 
45# TABLE FORMAT
46#        The input format for the postmap(1) command is as follows:
47# 
48#        pattern action
49#               When pattern matches a mail address, domain or host
50#               address, perform the corresponding action.
51# 
52#        blank lines and comments
53#               Empty  lines and whitespace-only lines are ignored,
54#               as are lines whose first  non-whitespace  character
55#               is a `#'.
56# 
57#        multi-line text
58#               A  logical  line starts with non-whitespace text. A
59#               line that starts with whitespace continues a  logi-
60#               cal line.
61# 
62# EMAIL ADDRESS PATTERNS
63#        With lookups from indexed files such as DB or DBM, or from
64#        networked tables such as NIS, LDAP or  SQL,  patterns  are
65#        tried in the order as listed below:
66# 
67#        user@domain
68#               Matches the specified mail address.
69# 
70#        domain.tld
71#               Matches  domain.tld  as the domain part of an email
72#               address.
73# 
74#               The pattern domain.tld also matches subdomains, but
75#               only when the string smtpd_access_maps is listed in
76#               the Postfix  parent_domain_matches_subdomains  con-
77#               figuration setting.
78# 
79#        .domain.tld
80#               Matches subdomains of domain.tld, but only when the
81#               string smtpd_access_maps is not listed in the Post-
82#               fix  parent_domain_matches_subdomains configuration
83#               setting.
84# 
85#        user@  Matches all mail addresses with the specified  user
86#               part.
87# 
88#        Note:  lookup  of  the null sender address is not possible
89#        with some types of lookup table. By default, Postfix  uses
90#        <>  as  the  lookup  key  for such addresses. The value is
91#        specified with the smtpd_null_access_lookup_key  parameter
92#        in the Postfix main.cf file.
93# 
94# EMAIL ADDRESS EXTENSION
95#        When a mail address localpart contains the optional recip-
96#        ient delimiter (e.g., user+foo@domain), the  lookup  order
97#        becomes:  user+foo@domain, user@domain, domain, user+foo@,
98#        and user@.
99# 
100# HOST NAME/ADDRESS PATTERNS
101#        With lookups from indexed files such as DB or DBM, or from
102#        networked  tables  such as NIS, LDAP or SQL, the following
103#        lookup patterns are examined in the order as listed:
104# 
105#        domain.tld
106#               Matches domain.tld.
107# 
108#               The pattern domain.tld also matches subdomains, but
109#               only when the string smtpd_access_maps is listed in
110#               the Postfix  parent_domain_matches_subdomains  con-
111#               figuration setting.
112# 
113#        .domain.tld
114#               Matches subdomains of domain.tld, but only when the
115#               string smtpd_access_maps is not listed in the Post-
116#               fix  parent_domain_matches_subdomains configuration
117#               setting.
118# 
119#        net.work.addr.ess
120# 
121#        net.work.addr
122# 
123#        net.work
124# 
125#        net    Matches the specified IPv4 host address or  subnet-
126#               work.  An  IPv4  host address is a sequence of four
127#               decimal octets separated by ".".
128# 
129#               Subnetworks are matched  by  repeatedly  truncating
130#               the last ".octet" from the remote IPv4 host address
131#               string until a match is found in the access  table,
132#               or until further truncation is not possible.
133# 
134#               NOTE 1: The access map lookup key must be in canon-
135#               ical form: do not specify unnecessary null  charac-
136#               ters,  and  do not enclose network address informa-
137#               tion with "[]" characters.
138# 
139#               NOTE 2: use the cidr lookup table type  to  specify
140#               network/netmask  patterns.  See  cidr_table(5)  for
141#               details.
142# 
143#        net:work:addr:ess
144# 
145#        net:work:addr
146# 
147#        net:work
148# 
149#        net    Matches the specified IPv6 host address or  subnet-
150#               work.  An  IPv6 host address is a sequence of three
151#               to eight hexadecimal octet pairs separated by  ":".
152# 
153#               Subnetworks  are  matched  by repeatedly truncating
154#               the last ":octetpair" from  the  remote  IPv6  host
155#               address string until a match is found in the access
156#               table, or until further truncation is not possible.
157# 
158#               NOTE 1: the truncation and comparison are done with
159#               the string representation of the IPv6 host address.
160#               Thus, not all the ":" subnetworks will be tried.
161# 
162#               NOTE 2: The access map lookup key must be in canon-
163#               ical form: do not specify unnecessary null  charac-
164#               ters,  and  do not enclose network address informa-
165#               tion with "[]" characters.
166# 
167#               NOTE 3: use the cidr lookup table type  to  specify
168#               network/netmask  patterns.  See  cidr_table(5)  for
169#               details.
170# 
171#               IPv6 support is available in Postfix 2.2 and later.
172# 
173# ACCEPT ACTIONS
174#        OK     Accept the address etc. that matches the pattern.
175# 
176#        all-numerical
177#               An all-numerical result is treated as OK. This for-
178#               mat is generated by address-based relay  authoriza-
179#               tion schemes such as pop-before-smtp.
180# 
181# REJECT ACTIONS
182#        Postfix  version  2.3  and  later  support enhanced status
183#        codes as defined in RFC 3463.  When no code  is  specified
184#        at  the  beginning  of  the  text below, Postfix inserts a
185#        default enhanced status code of "5.7.1"  in  the  case  of
186#        reject  actions, and "4.7.1" in the case of defer actions.
187#        See "ENHANCED STATUS CODES" below.
188# 
189#        4NN text
190# 
191#        5NN text
192#               Reject the address etc. that matches  the  pattern,
193#               and respond with the numerical three-digit code and
194#               text. 4NN means "try again later", while 5NN  means
195#               "do not try again".
196# 
197#               The  following  responses  have special meaning for
198#               the Postfix SMTP server:
199# 
200#               421 text (Postfix 2.3 and later)
201# 
202#               521 text (Postfix 2.6 and later)
203#                      After responding with the  numerical  three-
204#                      digit  code and text, disconnect immediately
205#                      from the SMTP client.  This  frees  up  SMTP
206#                      server  resources  so  that they can be made
207#                      available to another SMTP client.
208# 
209#                      Note: The "521" response should be used only
210#                      with  botnets and other malware where inter-
211#                      operability is of no concern.  The "send 521
212#                      and  disconnect"  behavior is NOT defined in
213#                      the SMTP standard.
214# 
215#        REJECT optional text...
216#               Reject the address etc. that matches  the  pattern.
217#               Reply    with   "$access_map_reject_code   optional
218#               text..." when the optional text is specified,  oth-
219#               erwise reply with a generic error response message.
220# 
221#        DEFER optional text...
222#               Reject the address etc. that matches  the  pattern.
223#               Reply    with    "$access_map_defer_code   optional
224#               text..." when the optional text is specified,  oth-
225#               erwise reply with a generic error response message.
226# 
227#               This feature is available in Postfix 2.6 and later.
228# 
229#        DEFER_IF_REJECT optional text...
230#               Defer  the  request if some later restriction would
231#               result   in   a   REJECT   action.    Reply    with
232#               "$access_map_defer_code   4.7.1  optional  text..."
233#               when the  optional  text  is  specified,  otherwise
234#               reply with a generic error response message.
235# 
236#               Prior to Postfix 2.6, the SMTP reply code is 450.
237# 
238#               This feature is available in Postfix 2.1 and later.
239# 
240#        DEFER_IF_PERMIT optional text...
241#               Defer the request if some later  restriction  would
242#               result  in a an explicit or implicit PERMIT action.
243#               Reply with "$access_map_defer_code 4.7.1   optional
244#               text..."  when the optional text is specified, oth-
245#               erwise reply with a generic error response message.
246# 
247#               Prior to Postfix 2.6, the SMTP reply code is 450.
248# 
249#               This feature is available in Postfix 2.1 and later.
250# 
251# OTHER ACTIONS
252#        restriction...
253#               Apply the named UCE restriction(s) (permit, reject,
254#               reject_unauth_destination, and so on).
255# 
256#        BCC user@domain
257#               Send  one  copy  of  the  message  to the specified
258#               recipient.
259# 
260#               If multiple BCC actions are  specified  within  the
261#               same  SMTP  MAIL  transaction, only the last action
262#               will be used.
263# 
264#               This feature is not  part  of  the  stable  Postfix
265#               release.
266# 
267#        DISCARD optional text...
268#               Claim  successful delivery and silently discard the
269#               message.  Log the optional text if specified,  oth-
270#               erwise log a generic message.
271# 
272#               Note:  this action currently affects all recipients
273#               of the message.   To  discard  only  one  recipient
274#               without  discarding  the  entire  message,  use the
275#               transport(5) table to direct mail to the discard(8)
276#               service.
277# 
278#               This feature is available in Postfix 2.0 and later.
279# 
280#        DUNNO  Pretend that the lookup key  was  not  found.  This
281#               prevents  Postfix  from  trying  substrings  of the
282#               lookup key (such as a subdomain name, or a  network
283#               address subnetwork).
284# 
285#               This feature is available in Postfix 2.0 and later.
286# 
287#        FILTER transport:destination
288#               After the message is queued, send the  entire  mes-
289#               sage through the specified external content filter.
290#               The transport name specifies the first field  of  a
291#               mail  delivery  agent  definition in master.cf; the
292#               syntax of the next-hop destination is described  in
293#               the  manual  page  of  the  corresponding  delivery
294#               agent.  More  information  about  external  content
295#               filters is in the Postfix FILTER_README file.
296# 
297#               Note  1: do not use $number regular expression sub-
298#               stitutions for transport or destination unless  you
299#               know that the information has a trusted origin.
300# 
301#               Note  2:  this  action  overrides  the main.cf con-
302#               tent_filter setting, and affects all recipients  of
303#               the  message.  In  the  case  that  multiple FILTER
304#               actions fire, only the last one is executed.
305# 
306#               Note 3: the purpose of the  FILTER  command  is  to
307#               override  message routing.  To override the recipi-
308#               ent's transport but not the  next-hop  destination,
309#               specify  an  empty  filter destination (Postfix 2.7
310#               and later), or specify a transport:destination that
311#               delivers   through  a  different  Postfix  instance
312#               (Postfix 2.6 and earlier). Other options are  using
313#               the  recipient-dependent transport_maps or the sen-
314#               der-dependent   sender_dependent_default_transport-
315#               _maps features.
316# 
317#               This feature is available in Postfix 2.0 and later.
318# 
319#        HOLD optional text...
320#               Place the message on the hold queue, where it  will
321#               sit  until someone either deletes it or releases it
322#               for delivery.  Log the optional text if  specified,
323#               otherwise log a generic message.
324# 
325#               Mail  that  is  placed on hold can be examined with
326#               the postcat(1) command, and  can  be  destroyed  or
327#               released with the postsuper(1) command.
328# 
329#               Note:  use  "postsuper -r" to release mail that was
330#               kept on hold for a significant fraction  of  $maxi-
331#               mal_queue_lifetime  or  $bounce_queue_lifetime,  or
332#               longer. Use "postsuper -H" only for mail that  will
333#               not expire within a few delivery attempts.
334# 
335#               Note:  this action currently affects all recipients
336#               of the message.
337# 
338#               This feature is available in Postfix 2.0 and later.
339# 
340#        PREPEND headername: headervalue
341#               Prepend  the  specified  message header to the mes-
342#               sage.  When more than one PREPEND action  executes,
343#               the  first prepended header appears before the sec-
344#               ond etc. prepended header.
345# 
346#               Note: this action must execute before  the  message
347#               content  is received; it cannot execute in the con-
348#               text of smtpd_end_of_data_restrictions.
349# 
350#               This feature is available in Postfix 2.1 and later.
351# 
352#        REDIRECT user@domain
353#               After  the  message  is queued, send the message to
354#               the  specified  address  instead  of  the  intended
355#               recipient(s).
356# 
357#               Note:  this action overrides the FILTER action, and
358#               currently affects all recipients of the message.
359# 
360#               This feature is available in Postfix 2.1 and later.
361# 
362#        WARN optional text...
363#               Log a warning with the optional text, together with
364#               client information and  if  available,  with  helo,
365#               sender, recipient and protocol information.
366# 
367#               This feature is available in Postfix 2.1 and later.
368# 
369# ENHANCED STATUS CODES
370#        Postfix version 2.3  and  later  support  enhanced  status
371#        codes  as  defined  in  RFC 3463.  When an enhanced status
372#        code is specified in an access table,  it  is  subject  to
373#        modification.  The  following  transformations  are needed
374#        when the same access  table  is  used  for  client,  helo,
375#        sender,  or  recipient  access  restrictions;  they happen
376#        regardless of whether Postfix replies to a MAIL FROM, RCPT
377#        TO or other SMTP command.
378# 
379#        o      When  a sender address matches a REJECT action, the
380#               Postfix SMTP server will transform a recipient  DSN
381#               status  (e.g.,  4.1.1-4.1.6) into the corresponding
382#               sender DSN status, and vice versa.
383# 
384#        o      When  non-address  information  matches  a   REJECT
385#               action  (such  as  the HELO command argument or the
386#               client hostname/address), the Postfix  SMTP  server
387#               will  transform  a  sender  or recipient DSN status
388#               into  a  generic  non-address  DSN  status   (e.g.,
389#               4.0.0).
390# 
391# REGULAR EXPRESSION TABLES
392#        This  section  describes how the table lookups change when
393#        the table is given in the form of regular expressions. For
394#        a  description  of regular expression lookup table syntax,
395#        see regexp_table(5) or pcre_table(5).
396# 
397#        Each pattern is a regular expression that  is  applied  to
398#        the entire string being looked up. Depending on the appli-
399#        cation, that string  is  an  entire  client  hostname,  an
400#        entire client IP address, or an entire mail address. Thus,
401#        no  parent  domain  or  parent  network  search  is  done,
402#        user@domain  mail  addresses  are not broken up into their
403#        user@ and domain constituent parts, nor is user+foo broken
404#        up into user and foo.
405# 
406#        Patterns  are applied in the order as specified in the ta-
407#        ble, until a pattern is  found  that  matches  the  search
408#        string.
409# 
410#        Actions  are  the  same as with indexed file lookups, with
411#        the additional feature that parenthesized substrings  from
412#        the pattern can be interpolated as $1, $2 and so on.
413# 
414# TCP-BASED TABLES
415#        This  section  describes how the table lookups change when
416#        lookups are directed to a TCP-based server. For a descrip-
417#        tion of the TCP client/server lookup protocol, see tcp_ta-
418#        ble(5).  This feature is not available up to and including
419#        Postfix version 2.4.
420# 
421#        Each  lookup  operation uses the entire query string once.
422#        Depending on the application, that  string  is  an  entire
423#        client hostname, an entire client IP address, or an entire
424#        mail address.  Thus, no parent domain  or  parent  network
425#        search  is done, user@domain mail addresses are not broken
426#        up into their user@ and domain constituent parts,  nor  is
427#        user+foo broken up into user and foo.
428# 
429#        Actions are the same as with indexed file lookups.
430# 
431# EXAMPLE
432#        The  following  example  uses an indexed file, so that the
433#        order of table entries does not matter. The  example  per-
434#        mits  access  by the client at address 1.2.3.4 but rejects
435#        all other clients in 1.2.3.0/24. Instead  of  hash  lookup
436#        tables,  some  systems use dbm.  Use the command "postconf
437#        -m" to find out what lookup  tables  Postfix  supports  on
438#        your system.
439# 
440#        /etc/postfix/main.cf:
441#            smtpd_client_restrictions =
442#                check_client_access hash:/etc/postfix/access
443# 
444#        /etc/postfix/access:
445#            1.2.3   REJECT
446#            1.2.3.4 OK
447# 
448#        Execute  the  command  "postmap /etc/postfix/access" after
449#        editing the file.
450# 
451# BUGS
452#        The table format does not understand quoting  conventions.
453# 
454# SEE ALSO
455#        postmap(1), Postfix lookup table manager
456#        smtpd(8), SMTP server
457#        postconf(5), configuration parameters
458#        transport(5), transport:nexthop syntax
459# 
460# README FILES
461#        Use  "postconf  readme_directory" or "postconf html_direc-
462#        tory" to locate this information.
463#        SMTPD_ACCESS_README, built-in SMTP server access control
464#        DATABASE_README, Postfix lookup table overview
465# 
466# LICENSE
467#        The Secure Mailer license must be  distributed  with  this
468#        software.
469# 
470# AUTHOR(S)
471#        Wietse Venema
472#        IBM T.J. Watson Research
473#        P.O. Box 704
474#        Yorktown Heights, NY 10598, USA
475# 
476#                                                                      ACCESS(5)
477