1 # GENERIC(5) GENERIC(5) 2 # 3 # NAME 4 # generic - Postfix generic table format 5 # 6 # SYNOPSIS 7 # postmap /etc/postfix/generic 8 # 9 # postmap -q "string" /etc/postfix/generic 10 # 11 # postmap -q - /etc/postfix/generic <inputfile 12 # 13 # DESCRIPTION 14 # The optional generic(5) table specifies an address mapping 15 # that applies when mail is delivered. This is the opposite 16 # of canonical(5) mapping, which applies when mail is 17 # received. 18 # 19 # Typically, one would use the generic(5) table on a system 20 # that does not have a valid Internet domain name and that 21 # uses something like localdomain.local instead. The 22 # generic(5) table is then used by the smtp(8) client to 23 # transform local mail addresses into valid Internet mail 24 # addresses when mail has to be sent across the Internet. 25 # See the EXAMPLE section at the end of this document. 26 # 27 # The generic(5) mapping affects both message header 28 # addresses (i.e. addresses that appear inside messages) and 29 # message envelope addresses (for example, the addresses 30 # that are used in SMTP protocol commands). 31 # 32 # Normally, the generic(5) table is specified as a text file 33 # that serves as input to the postmap(1) command. The 34 # result, an indexed file in dbm or db format, is used for 35 # fast searching by the mail system. Execute the command 36 # "postmap /etc/postfix/generic" to rebuild an indexed file 37 # after changing the corresponding text file. 38 # 39 # When the table is provided via other means such as NIS, 40 # LDAP or SQL, the same lookups are done as for ordinary 41 # indexed files. 42 # 43 # Alternatively, the table can be provided as a regu- 44 # lar-expression map where patterns are given as regular 45 # expressions, or lookups can be directed to a TCP-based 46 # server. In those cases, the lookups are done in a slightly 47 # different way as described below under "REGULAR EXPRESSION 48 # TABLES" or "TCP-BASED TABLES". 49 # 50 # CASE FOLDING 51 # The search string is folded to lowercase before database 52 # lookup. As of Postfix 2.3, the search string is not case 53 # folded with database types such as regexp: or pcre: whose 54 # lookup fields can match both upper and lower case. 55 # 56 # TABLE FORMAT 57 # The input format for the postmap(1) command is as follows: 58 # 59 # pattern result 60 # When pattern matches a mail address, replace it by 61 # the corresponding result. 62 # 63 # blank lines and comments 64 # Empty lines and whitespace-only lines are ignored, 65 # as are lines whose first non-whitespace character 66 # is a `#'. 67 # 68 # multi-line text 69 # A logical line starts with non-whitespace text. A 70 # line that starts with whitespace continues a logi- 71 # cal line. 72 # 73 # TABLE SEARCH ORDER 74 # With lookups from indexed files such as DB or DBM, or from 75 # networked tables such as NIS, LDAP or SQL, each 76 # user@domain query produces a sequence of query patterns as 77 # described below. 78 # 79 # Each query pattern is sent to each specified lookup table 80 # before trying the next query pattern, until a match is 81 # found. 82 # 83 # user@domain address 84 # Replace user@domain by address. This form has the 85 # highest precedence. 86 # 87 # user address 88 # Replace user@site by address when site is equal to 89 # $myorigin, when site is listed in $mydestination, 90 # or when it is listed in $inet_interfaces or 91 # $proxy_interfaces. 92 # 93 # @domain address 94 # Replace other addresses in domain by address. This 95 # form has the lowest precedence. 96 # 97 # RESULT ADDRESS REWRITING 98 # The lookup result is subject to address rewriting: 99 # 100 # o When the result has the form @otherdomain, the 101 # result becomes the same user in otherdomain. 102 # 103 # o When "append_at_myorigin=yes", append "@$myorigin" 104 # to addresses without "@domain". 105 # 106 # o When "append_dot_mydomain=yes", append ".$mydomain" 107 # to addresses without ".domain". 108 # 109 # ADDRESS EXTENSION 110 # When a mail address localpart contains the optional recip- 111 # ient delimiter (e.g., user+foo@domain), the lookup order 112 # becomes: user+foo@domain, user@domain, user+foo, user, and 113 # @domain. 114 # 115 # The propagate_unmatched_extensions parameter controls 116 # whether an unmatched address extension (+foo) is propa- 117 # gated to the result of table lookup. 118 # 119 # REGULAR EXPRESSION TABLES 120 # This section describes how the table lookups change when 121 # the table is given in the form of regular expressions. For 122 # a description of regular expression lookup table syntax, 123 # see regexp_table(5) or pcre_table(5). 124 # 125 # Each pattern is a regular expression that is applied to 126 # the entire address being looked up. Thus, user@domain mail 127 # addresses are not broken up into their user and @domain 128 # constituent parts, nor is user+foo broken up into user and 129 # foo. 130 # 131 # Patterns are applied in the order as specified in the ta- 132 # ble, until a pattern is found that matches the search 133 # string. 134 # 135 # Results are the same as with indexed file lookups, with 136 # the additional feature that parenthesized substrings from 137 # the pattern can be interpolated as $1, $2 and so on. 138 # 139 # TCP-BASED TABLES 140 # This section describes how the table lookups change when 141 # lookups are directed to a TCP-based server. For a descrip- 142 # tion of the TCP client/server lookup protocol, see tcp_ta- 143 # ble(5). This feature is available in Postfix 2.5 and 144 # later. 145 # 146 # Each lookup operation uses the entire address once. Thus, 147 # user@domain mail addresses are not broken up into their 148 # user and @domain constituent parts, nor is user+foo broken 149 # up into user and foo. 150 # 151 # Results are the same as with indexed file lookups. 152 # 153 # EXAMPLE 154 # The following shows a generic mapping with an indexed 155 # file. When mail is sent to a remote host via SMTP, this 156 # replaces his (a] localdomain.local by his ISP mail address, 157 # replaces her (a] localdomain.local by her ISP mail address, 158 # and replaces other local addresses by his ISP account, 159 # with an address extension of +local (this example assumes 160 # that the ISP supports "+" style address extensions). 161 # 162 # /etc/postfix/main.cf: 163 # smtp_generic_maps = hash:/etc/postfix/generic 164 # 165 # /etc/postfix/generic: 166 # his (a] localdomain.local hisaccount (a] hisisp.example 167 # her (a] localdomain.local heraccount (a] herisp.example 168 # @localdomain.local hisaccount+local (a] hisisp.example 169 # 170 # Execute the command "postmap /etc/postfix/generic" when- 171 # ever the table is changed. Instead of hash, some systems 172 # use dbm database files. To find out what tables your sys- 173 # tem supports use the command "postconf -m". 174 # 175 # BUGS 176 # The table format does not understand quoting conventions. 177 # 178 # CONFIGURATION PARAMETERS 179 # The following main.cf parameters are especially relevant. 180 # The text below provides only a parameter summary. See 181 # postconf(5) for more details including examples. 182 # 183 # smtp_generic_maps (empty) 184 # Optional lookup tables that perform address rewrit- 185 # ing in the Postfix SMTP client, typically to trans- 186 # form a locally valid address into a globally valid 187 # address when sending mail across the Internet. 188 # 189 # propagate_unmatched_extensions (canonical, virtual) 190 # What address lookup tables copy an address exten- 191 # sion from the lookup key to the lookup result. 192 # 193 # Other parameters of interest: 194 # 195 # inet_interfaces (all) 196 # The local network interface addresses that this 197 # mail system receives mail on. 198 # 199 # proxy_interfaces (empty) 200 # The remote network interface addresses that this 201 # mail system receives mail on by way of a proxy or 202 # network address translation unit. 203 # 204 # mydestination ($myhostname, localhost.$mydomain, local- 205 # host) 206 # The list of domains that are delivered via the 207 # $local_transport mail delivery transport. 208 # 209 # myorigin ($myhostname) 210 # The domain name that locally-posted mail appears to 211 # come from, and that locally posted mail is deliv- 212 # ered to. 213 # 214 # owner_request_special (yes) 215 # Enable special treatment for owner-listname entries 216 # in the aliases(5) file, and don't split owner-list- 217 # name and listname-request address localparts when 218 # the recipient_delimiter is set to "-". 219 # 220 # SEE ALSO 221 # postmap(1), Postfix lookup table manager 222 # postconf(5), configuration parameters 223 # smtp(8), Postfix SMTP client 224 # 225 # README FILES 226 # Use "postconf readme_directory" or "postconf html_direc- 227 # tory" to locate this information. 228 # ADDRESS_REWRITING_README, address rewriting guide 229 # DATABASE_README, Postfix lookup table overview 230 # STANDARD_CONFIGURATION_README, configuration examples 231 # 232 # LICENSE 233 # The Secure Mailer license must be distributed with this 234 # software. 235 # 236 # HISTORY 237 # A genericstable feature appears in the Sendmail MTA. 238 # 239 # This feature is available in Postfix 2.2 and later. 240 # 241 # AUTHOR(S) 242 # Wietse Venema 243 # IBM T.J. Watson Research 244 # P.O. Box 704 245 # Yorktown Heights, NY 10598, USA 246 # 247 # Wietse Venema 248 # Google, Inc. 249 # 111 8th Avenue 250 # New York, NY 10011, USA 251 # 252 # GENERIC(5) 253