2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-29 21:27:57 +00:00

snapshot-19991220

This commit is contained in:
Wietse Venema 1999-12-20 00:00:00 -05:00
parent 89d0723baf
commit 6c23bcd020
18 changed files with 462 additions and 275 deletions

View File

@ -3427,3 +3427,12 @@ Apologies for any names omitted.
Cleanup: INSTALL.sh uses a configurable directory for Cleanup: INSTALL.sh uses a configurable directory for
scratch files, so that it can install from a file system scratch files, so that it can install from a file system
that is not writable by the super-user. that is not writable by the super-user.
19991220
Cleanup: it is no longer necessary to list $virtual_maps
as part of the relay_domains definition. The SMTP server
now by default accepts mail for domains that match
$mydestination or $virtual_maps, or that resolve to a mail
delivery transport that is listed in $local_transport.
Files: smtpd/smtpd_check.c and lots of documentation.

View File

@ -14,12 +14,6 @@
# #
queue_directory = /var/spool/postfix queue_directory = /var/spool/postfix
# The program_directory parameter specifies the default location of
# Postfix support programs and daemons. This setting can be overruled
# with the command_directory and daemon_directory parameters.
#
program_directory = /some/where/postfix/bin
# The command_directory parameter specifies the location of all # The command_directory parameter specifies the location of all
# postXXX commands. The default value is $program_directory. # postXXX commands. The default value is $program_directory.
# #
@ -90,7 +84,9 @@ mail_owner = postfix
#inet_interfaces = $myhostname, localhost #inet_interfaces = $myhostname, localhost
# The mydestination parameter specifies the list of domains that this # The mydestination parameter specifies the list of domains that this
# machine considers itself the final destination for. # machine considers itself the final destination for. That does not
# include domains that are hosted on this machine. Those domains are
# specified elsewhere (see sample-virtual.cf, and sample-transport.cf).
# #
# The default is $myhostname + localhost.$mydomain. On a mail domain # The default is $myhostname + localhost.$mydomain. On a mail domain
# gateway, you should also include $mydomain. Do not specify the # gateway, you should also include $mydomain. Do not specify the
@ -131,34 +127,6 @@ mail_owner = postfix
# #
#local_recipient_maps = $alias_maps unix:passwd.byname #local_recipient_maps = $alias_maps unix:passwd.byname
# INTERNET VERSUS INTRANET
#
# The relayhost parameter specifies the default host to send mail to
# when no entry is matched in the optional transport(5) table. When
# no relayhost is given, mail is routed directly to the destination.
#
# On an intranet, specify the organizational domain name. If your
# internal DNS uses no MX records, specify the name of the intranet
# gateway host instead.
#
# Specify a domain, host, host:port, [address] or [address:port].
# Use the form [destination] to turn off MX lookups. See also the
# default_transport parameter if you're connected via UUCP.
#
#relayhost = $mydomain
#relayhost = gateway.my.domain
#relayhost = uucphost
#relayhost = [mail.$mydomain:9999]
# DEFAULT TRANSPORT
#
# The default_transport parameter specifies the default message
# delivery transport to use when no transport is explicitly given in
# the optional transport(5) table.
#
#default_transport = smtp
#default_transport = uucp
# ADDRESS REWRITING # ADDRESS REWRITING
# #
# Insert text from sample-rewrite.cf if you need to do address # Insert text from sample-rewrite.cf if you need to do address
@ -211,18 +179,6 @@ mail_owner = postfix
#alias_database = hash:/etc/aliases #alias_database = hash:/etc/aliases
#alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases #alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
# DELIVERED-TO
#
# The prepend_delivered_header controls when Postfix should prepend
# a Delivered-To: message header.
#
# By default, Postfix prepends a Delivered-To: header when forwarding
# mail and when delivering to file (mailbox) or command. Turning off
# the Delivered-To: header when forwarding mail is not recommended.
#
# prepend_delivered_header = command, file, forward
# prepend_delivered_header = forward
# ADDRESS EXTENSIONS (e.g., user+foo) # ADDRESS EXTENSIONS (e.g., user+foo)
# #
# The recipient_delimiter parameter specifies the separator between # The recipient_delimiter parameter specifies the separator between
@ -256,10 +212,6 @@ mail_owner = postfix
# the recipient with proper HOME, SHELL and LOGNAME environment settings. # the recipient with proper HOME, SHELL and LOGNAME environment settings.
# Exception: delivery for root is done as $default_user. # Exception: delivery for root is done as $default_user.
# #
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE WITH, E.G., PROCMAIL,
# YOU MUST SET UP AN ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL
# USER.
#
# Other environment variables of interest: USER (recipient username), # Other environment variables of interest: USER (recipient username),
# EXTENSION (address extension), DOMAIN (domain part of address), # EXTENSION (address extension), DOMAIN (domain part of address),
# and LOCAL (the address localpart). # and LOCAL (the address localpart).
@ -271,6 +223,9 @@ mail_owner = postfix
# Avoid shell meta characters because they will force Postfix to run # Avoid shell meta characters because they will force Postfix to run
# an expensive shell process. Procmail alone is expensive enough. # an expensive shell process. Procmail alone is expensive enough.
# #
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
# ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
#
#mailbox_command = /some/where/procmail #mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION" #mailbox_command = /some/where/procmail -a "$EXTENSION"
@ -317,14 +272,20 @@ mail_owner = postfix
#header_checks = regexp:/etc/postfix/filename #header_checks = regexp:/etc/postfix/filename
#header_checks = pcre:/etc/postfix/filename #header_checks = pcre:/etc/postfix/filename
# The relay_domains parameter restricts what client hostname domains # The relay_domains parameter restricts what clients this mail system
# (and subdomains thereof) this mail system will relay mail from, # will relay mail from, or what destinations this system will relay
# and restricts what destination domains (and subdomains thereof) # mail to. See the smtpd_recipient_restrictions restriction in the
# this system will relay mail to. See the smtpd_recipient_restrictions # file sample-smtpd.cf.
# restriction in the file sample-smtpd.cf.
# #
# By default, Postfix relays mail only from clients or to destinations # By default, Postfix relays mail from clients whose IP address
# in or below $mydestination, or in the optional virtual domain list. # matches $mynetworks, and from clients or to destination domains
# matching $relay_domains or subdomains thereof. The default
# relay_domains value is $mydestination.
#
# By default, the Postfix SMTP server accepts mail for domains listed
# in $mydestination and in $virtual_maps, and for destinations that
# resolve to a mail delivery transport listed in $local_transports.
# These destinations do not need to be listed in $relay_domains.
# #
# Specify a list of hosts or domains, /file/name patterns or type:name # Specify a list of hosts or domains, /file/name patterns or type:name
# lookup tables, separated by commas and/or whitespace. Continue # lookup tables, separated by commas and/or whitespace. Continue
@ -336,7 +297,7 @@ mail_owner = postfix
# list this system as their primary or backup MX host. See the # list this system as their primary or backup MX host. See the
# permit_mx_backup restriction in the file sample-smtpd.cf. # permit_mx_backup restriction in the file sample-smtpd.cf.
# #
#relay_domains = $mydestination, $virtual_maps #relay_domains = $mydestination
# The mynetworks parameter specifies the list of networks that are # The mynetworks parameter specifies the list of networks that are
# local to this machine. The list is used by the anti-UCE software # local to this machine. The list is used by the anti-UCE software

View File

@ -101,10 +101,6 @@ home_mailbox =
# as the recipient with proper HOME, SHELL and LOGNAME environment settings. # as the recipient with proper HOME, SHELL and LOGNAME environment settings.
# Exception: delivery for root is done as $default_user. # Exception: delivery for root is done as $default_user.
# #
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE WITH, E.G., PROCMAIL,
# YOU MUST SET UP AN ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL
# USER.
#
# Other environment variables of interest: USER (recipient username), # Other environment variables of interest: USER (recipient username),
# EXTENSION (address extension), DOMAIN (domain part of address), # EXTENSION (address extension), DOMAIN (domain part of address),
# and LOCAL (the address localpart). # and LOCAL (the address localpart).
@ -116,6 +112,9 @@ home_mailbox =
# Avoid shell meta characters because they will force Postfix to run # Avoid shell meta characters because they will force Postfix to run
# an expensive shell process. Procmail alone is expensive enough. # an expensive shell process. Procmail alone is expensive enough.
# #
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
# ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
#
# mailbox_command = /some/where/procmail # mailbox_command = /some/where/procmail
# mailbox_command = /some/where/procmail -a "$EXTENSION" # mailbox_command = /some/where/procmail -a "$EXTENSION"
mailbox_command = mailbox_command =

View File

@ -185,22 +185,30 @@ smtpd_sender_restrictions =
# The smtpd_recipient_restrictions parameter specifies restrictions on # The smtpd_recipient_restrictions parameter specifies restrictions on
# recipient addresses that SMTP clients can send in RCPT TO commands. # recipient addresses that SMTP clients can send in RCPT TO commands.
# #
# The default is to permit any destination from clients that match # By default, Postfix relays mail from clients whose IP address
# $mynetworks, and to otherwise permit only mail from clients or to # matches $mynetworks, and from clients or to destination domains
# destinations that match $relay_domains or a subdomain thereof. # matching $relay_domains or subdomains thereof. The default
# relay_domains value is $mydestination.
# #
# The following restrictions are available: # By default, the Postfix SMTP server accepts mail for domains listed
# in $mydestination and in $virtual_maps, and for destinations that
# resolve to a mail delivery transport listed in $local_transports.
# These destinations do not need to be listed in $relay_domains.
# #
# permit_mynetworks: permit if the client address matches $mynetworks. # The following restrictions are available (* is part of default setting):
#
# *permit_mynetworks: permit if the client address matches $mynetworks.
# reject_unknown_client: reject the request if the client hostname is unknown. # reject_unknown_client: reject the request if the client hostname is unknown.
# reject_maps_rbl: reject if the client is listed under $maps_rbl_domains. # reject_maps_rbl: reject if the client is listed under $maps_rbl_domains.
# reject_invalid_hostname: reject HELO hostname with bad syntax. # reject_invalid_hostname: reject HELO hostname with bad syntax.
# reject_unknown_hostname: reject HELO hostname without DNS A or MX record. # reject_unknown_hostname: reject HELO hostname without DNS A or MX record.
# reject_unknown_sender_domain: reject sender domain without A or MX record. # reject_unknown_sender_domain: reject sender domain without A or MX record.
# check_relay_domains: permit only mail from clients/to domains matching # *check_relay_domains: permit only mail from clients/to domains matching
# $relay_domains, or to the local machine. # $relay_domains, or to $mydestination, $virtual_maps or $local_transports
# permit_auth_destination: permit mail to self or to $relay_domains. # permit_auth_destination: permit mail to domains matching $relay_domains,
# reject_unauth_destination: reject mail not to self or to $relay_domains. # or to $mydestination, $virtual_maps or $local_transports.
# reject_unauth_destination: reject mail not to $relay_domains or to
# $mydestination, $virtual_maps or $local_transports.
# reject_unauth_pipelining: reject mail from improperly pipelining spamware # reject_unauth_pipelining: reject mail from improperly pipelining spamware
# permit_mx_backup: accept mail for sites that list me as MX host. # permit_mx_backup: accept mail for sites that list me as MX host.
# reject_unknown_recipient_domain: reject domains without A or MX record. # reject_unknown_recipient_domain: reject domains without A or MX record.
@ -246,8 +254,15 @@ maps_rbl_domains = rbl.maps.vix.com
# and restricts what destination domains (and subdomains thereof) # and restricts what destination domains (and subdomains thereof)
# this system will relay mail to. # this system will relay mail to.
# #
# By default, Postfix relays mail only from clients or to destinations # By default, Postfix relays mail from clients whose IP address
# in or below $mydestination, or in the optional virtual domain list. # matches $mynetworks, and from clients or to destination domains
# matching $relay_domains or subdomains thereof. The default
# relay_domains value is $mydestination.
#
# By default, the Postfix SMTP server accepts mail for domains listed
# in $mydestination and in $virtual_maps, and for destinations that
# resolve to a mail delivery transport listed in $local_transports.
# These destinations do not need to be listed in $relay_domains.
# #
# Specify a list of hosts or domains, /file/name patterns or type:name # Specify a list of hosts or domains, /file/name patterns or type:name
# lookup tables, separated by commas and/or whitespace. Continue # lookup tables, separated by commas and/or whitespace. Continue
@ -260,7 +275,7 @@ maps_rbl_domains = rbl.maps.vix.com
# permit_mx_backup restriction, in the description of the # permit_mx_backup restriction, in the description of the
# smtpd_recipient_restrictions parameter. # smtpd_recipient_restrictions parameter.
# #
relay_domains = $mydestination, $virtual_maps relay_domains = $mydestination
# #
# RESPONSE CODES # RESPONSE CODES

View File

@ -4,6 +4,14 @@
# This file contains example settings of Postfix configuration # This file contains example settings of Postfix configuration
# parameters that control the optional transport table lookups. # parameters that control the optional transport table lookups.
# The local_transports parameter defines the name of the default
# transport for local mail delivery, plus zero or more names of
# additional transports that are known to deliver locally. By default,
# the SMTP server's UCE restrictions permit mail for any destination
# that resolves to a mail delivery transport in $local_transports.
#
local_transports = local,cyrus
# The transport_maps parameter specifies optional tables with domain # The transport_maps parameter specifies optional tables with domain
# to (transport, nexthop) mappings. See transport(5) for syntax details. # to (transport, nexthop) mappings. See transport(5) for syntax details.
# #
@ -16,11 +24,3 @@
# transport_maps = hash:/etc/postfix/transport, nis:transport # transport_maps = hash:/etc/postfix/transport, nis:transport
# transport_maps = hash:/etc/postfix/transport, netinfo:/transport # transport_maps = hash:/etc/postfix/transport, netinfo:/transport
transport_maps = transport_maps =
# The local_transports parameter defines the name of the default
# transport for local mail delivery, plus zero or more names of
# additional transports that are known to deliver locally. The SMTP
# server's UCE restrictions use this list to decide if an address
# would be forwarded or not.
#
local_transports = local

View File

@ -13,7 +13,7 @@
# If you use this feature, run "postmap /etc/postfix/virtual" to # If you use this feature, run "postmap /etc/postfix/virtual" to
# build the necessary DBM or DB file after change. # build the necessary DBM or DB file after change.
# #
# It will take a minute or so before the change becomes visible. # It may take a minute or so before the change becomes visible.
# Use "postfix reload" to eliminate the delay. # Use "postfix reload" to eliminate the delay.
# #
# virtual_maps = dbm:/etc/postfix/virtual # virtual_maps = dbm:/etc/postfix/virtual

View File

@ -31,10 +31,8 @@
# .fi # .fi
# .in -4 # .in -4
# #
# With this, the SMTP server accepts mail for \fIvirtual.domain\fR # With this, the SMTP server accepts mail for \fIvirtual.domain\fR and
# (provided that the \fBrelay_domains\fR parameter includes # rejects mail for \fIunknown\fR@\fIvirtual.domain\fR as undeliverable.
# $\fBvirtual_maps\fR), and mail for \fIunknown\fR@\fIvirtual.domain\fR
# is bounced as undeliverable.
# #
# The format of the virtual table is as follows, mappings being # The format of the virtual table is as follows, mappings being
# tried in the order as listed in this manual page: # tried in the order as listed in this manual page:

View File

@ -84,7 +84,7 @@ extern char *var_mydomain;
* Transports that deliver locally. Order matters. * Transports that deliver locally. Order matters.
*/ */
#define VAR_LOCAL_TRANSP "local_transports" #define VAR_LOCAL_TRANSP "local_transports"
#define DEF_LOCAL_TRANSP "local" #define DEF_LOCAL_TRANSP "local,cyrus"
extern char *var_local_transports; extern char *var_local_transports;
/* /*
@ -717,7 +717,7 @@ extern int var_trigger_timeout;
extern char *var_mynetworks; extern char *var_mynetworks;
#define VAR_RELAY_DOMAINS "relay_domains" #define VAR_RELAY_DOMAINS "relay_domains"
#define DEF_RELAY_DOMAINS "$mydestination, $virtual_maps" #define DEF_RELAY_DOMAINS "$mydestination"
extern char *var_relay_domains; extern char *var_relay_domains;
#define VAR_CLIENT_CHECKS "smtpd_client_restrictions" #define VAR_CLIENT_CHECKS "smtpd_client_restrictions"

View File

@ -15,7 +15,7 @@
* Version of this program. * Version of this program.
*/ */
#define VAR_MAIL_VERSION "mail_version" #define VAR_MAIL_VERSION "mail_version"
#define DEF_MAIL_VERSION "Snapshot-19991219" #define DEF_MAIL_VERSION "Snapshot-19991220"
extern char *var_mail_version; extern char *var_mail_version;
/* LICENSE /* LICENSE

View File

@ -52,6 +52,8 @@
<ul> <ul>
<li><a href="#stand_alone">Stand-alone machine</a>
<li><a href="#workstation_server">Workstations and servers</a> <li><a href="#workstation_server">Workstations and servers</a>
<li><a href="#null_client">Null clients</a> <li><a href="#null_client">Null clients</a>
@ -110,7 +112,8 @@ virtual domains</a>
<li><a href="#root">Root's mail is delivered to nobody</a> <li><a href="#root">Root's mail is delivered to nobody</a>
<li><a href="#local">Delivering some users locally while sending mail as user@domain</a> <li><a href="#some_local">Delivering some users locally while
sending mail as user@domain</a>
<li><a href="#maildir">Support for maildir-style mailboxes</a> <li><a href="#maildir">Support for maildir-style mailboxes</a>
@ -196,9 +199,19 @@ virtual domains</a>
<hr> <hr>
<a name="stand_alone"><h3>Stand-alone machine</h3>
Out of the box, Postfix should work without change on a stand-alone
machine that is has direct Internet access. At least, that is how
Postfix installs when you download the Postfix source code. If you
are on a firewalled intranet, or if your machine is dial-up connected
only a small part of the time, see the respective sections.
<hr>
<a name="workstation_server"><h3>Workstations and servers</h3> <a name="workstation_server"><h3>Workstations and servers</h3>
This section describes a workstation-sever environment. All systems This section describes a workstation-server environment. All systems
send mail as user@domain. All systems receive mail for user@hostname. send mail as user@domain. All systems receive mail for user@hostname.
The server receives mail for user@domain, too. The server receives mail for user@domain, too.
@ -268,7 +281,6 @@ domain.
<pre> <pre>
<b>/etc/postfix/main.cf</b>: <b>/etc/postfix/main.cf</b>:
mydestination =
myorigin = $mydomain myorigin = $mydomain
relayhost = $mydomain relayhost = $mydomain
@ -279,21 +291,9 @@ domain.
<p> <p>
The mail server is the primary MX host for null clients (remember, Since everything sends mail as user@domain, nothing sends mail as
null clients do not receive mail, so something needs to be done user@nullclient, and therefore no special configuration needs to
with mail for user@nullclient). be done on the mail server for mail addressed to user@nullclient.
<p>
<pre>
<b>/etc/postfix/main.cf</b>:
myorigin = $mydomain
mydestination = $myhostname localhost.$mydomain $mydomain /etc/postfix/nullclients
<b>/etc/postfix/nullclients</b>:
hosta.my.domain
hostb.my.domain
</pre>
<hr> <hr>
@ -307,8 +307,18 @@ to let that mail gateway take care of forwarding.
<ul> <ul>
<li>Forward <i>all</i> mail to an intranet mail gateway, unless <li>Send mail as user@domain. This is optional but highly recommended
the mail is to be delivered on the local machine: because it allows users to change machines without hassle.
<pre>
<b>/etc/postfix/main.cf</b>:
myorigin = $mydomain
</pre>
<p>
<li>Forward <i>all</i> mail to an intranet mail gateway, except
for mail for the local machine:
<p> <p>
@ -364,8 +374,8 @@ href="transport.5.html">transport</a> table lookups.
<b>/etc/postfix/transport</b>: <b>/etc/postfix/transport</b>:
my.domain smtp: my.domain smtp:
.my.domain smtp: .my.domain smtp:
thishost.my.domain local: <blink>important!</blink> thishost.my.domain local: <blink>!important!</blink>
localhost.my.domain local: <blink>important!</blink> localhost.my.domain local: <blink>!important!</blink>
<b>/etc/postfix/main.cf</b>: <b>/etc/postfix/main.cf</b>:
transport_maps = hash:/etc/postfix/transport transport_maps = hash:/etc/postfix/transport
@ -373,8 +383,8 @@ href="transport.5.html">transport</a> table lookups.
<p> <p>
Important: do not omit the entries that route local mail to the Important: do not omit the entries that deliver mail locally, or
local delivery agent, or else mail your mail will go into a loop. else mail will bounce with a "mail loops to myself" condition.
<p> <p>
@ -383,6 +393,11 @@ uses <b>dbm</b> files instead of <b>db</b>.
<p> <p>
Execute the command <b>postmap /etc/postfix/transport</b> whenever
you edit the transport table.
<p>
<li>Execute the command <b>postfix reload</b> to make the <li>Execute the command <b>postfix reload</b> to make the
changes effective. changes effective.
@ -393,7 +408,8 @@ changes effective.
<a name="firewall"><h3>Running Postfix on a firewall</h3> </a> <a name="firewall"><h3>Running Postfix on a firewall</h3> </a>
Note: this text applies to Postfix versions dated 19991115 Note: this text applies to Postfix versions dated 19991115
and later only. and later only. To find out what Postfix version you have,
execute the command <b>postconf mail_version</b>.
<p> <p>
@ -421,8 +437,11 @@ route mail for <i>my.domain</i> to the inside machine:
transport_maps = hash:/etc/postfix/transport transport_maps = hash:/etc/postfix/transport
<b>/etc/postfix/transport</b>: <b>/etc/postfix/transport</b>:
my.domain smtp:inside-gateway.my.domain my.domain smtp:inside-gateway.my.domain (forwards user@domain)
.my.domain smtp:inside-gateway.my.domain .my.domain smtp:inside-gateway.my.domain (forwards user@firewall)
<b>/etc/postfix/master.cf</b>:
Comment out the local delivery agent
</pre> </pre>
<p> <p>
@ -432,6 +451,11 @@ files instead of <b>db</b>.
<p> <p>
<li>Execute the command <b>postmap /etc/postfix/transport</b>
whenever you change the transport table.
<p>
<li>Execute the command <b>postfix reload</b> after a <li>Execute the command <b>postfix reload</b> after a
configuration change. configuration change.
@ -441,6 +465,18 @@ configuration change.
<a name="dialup"><h3>Running Postfix on a dialup machine</h3></a> <a name="dialup"><h3>Running Postfix on a dialup machine</h3></a>
This section applies to dialup connections that are down most of
the time. For dialup connections that are up 24x7, see the <a
href="#workstation_server">workstations and servers</a> section
instead.
<p>
If you do not have your own hostname (as with dynamic IP addressing)
and must send mail as user@your-isp.com, you should also study the
the section on <a href="#some_local">delivering some users locally
while sending mail as user@domain</a>.
<ul> <ul>
<li> Route all outgoing mail to your provider. <li> Route all outgoing mail to your provider.
@ -588,11 +624,12 @@ is probably more a matter of expectation and of what one is used to.
<p> <p>
This can be "fixed" only by making Postfix slower. Postfix would This can be "fixed" only by making Postfix slower. In the above
first have to expand all distribution lists before starting any examples, Postfix would first have to completely expand all
delivery. By design, Postfix delivers mail to different destinations distribution lists before starting any delivery. By design, Postfix
in parallel, and local delivery is no exception. This is why Postfix delivers mail to different destinations in parallel, and local
can be faster than sendmail. delivery is no exception. This is why Postfix can be faster than
sendmail.
<hr> <hr>
@ -601,14 +638,14 @@ distribution list</h3> </a>
Some people will complain that Postfix sends mail to every member Some people will complain that Postfix sends mail to every member
of a distribution list, including the poster. By default, Sendmail of a distribution list, including the poster. By default, Sendmail
deletes the poster from the distribution list. Sendmail sends mail deletes the poster from distribution lists. Sendmail sends mail to
to the poster only when the "metoo" flag is explicitly turned on. the poster only when the "metoo" flag is explicitly turned on.
<p> <p>
Wietse believes that Postfix implements the "right" behavior, Wietse believes that Postfix implements the "right" behavior,
and suspects that Sendmail's default behavior is a remnant from a and suspects that Sendmail's default behavior is a remnant from a
dark past when Sendmail used a really crummy algorithm to avoid dark past when Sendmail used a pretty crummy algorithm to avoid
aliasing loops. aliasing loops.
<hr> <hr>
@ -902,7 +939,8 @@ To find out the location for your system, execute the command
<hr> <hr>
<a name="local"><h3>Delivering some users locally while sending mail as user@domain</h3></a> <a name="some_local"><h3>Delivering some users locally while sending
mail as user@domain</h3></a>
<ul> <ul>
@ -1630,8 +1668,8 @@ changes effective.
<a name="uucp-only"><h3>Using UUCP as the default transport</h3> </a> <a name="uucp-only"><h3>Using UUCP as the default transport</h3> </a>
Here is how to relay all your mail over a UUCP link. See the <a Here is how to relay all your mail over a UUCP link. See the <a
href="#uucp">Internet to UUCP</a> FAQ entry for setting up a machine href="#internet-uucp">Internet to UUCP</a> FAQ entry for setting
that gateways between UUCP and SMTP. up a machine that gateways between UUCP and SMTP.
<p> <p>
@ -1813,7 +1851,7 @@ One problem: older DB versions install a file
<b>/usr/local/include/ndbm.h</b> that is incompatible with <b>/usr/local/include/ndbm.h</b> that is incompatible with
<b>/usr/include/ndbm.h</b>. Be sure to get rid of the bogus file. <b>/usr/include/ndbm.h</b>. Be sure to get rid of the bogus file.
See the FAQ entry titled "<a href="#dbm_dirfno">Undefined symbols: See the FAQ entry titled "<a href="#dbm_dirfno">Undefined symbols:
dbm_pagfno, dbm_dirfno etc". dbm_pagfno, dbm_dirfno etc</a>".
<hr> <hr>

View File

@ -210,6 +210,10 @@ QMGR(8) QMGR(8)
command after a configuration change. command after a configuration change.
<b>Miscellaneous</b> <b>Miscellaneous</b>
<b>allow</b><i>_</i><b>min</b><i>_</i><b>user</b>
Do not bounce recipient addresses that begin with
'-'.
<b>relocated</b><i>_</i><b>maps</b> <b>relocated</b><i>_</i><b>maps</b>
Tables with contact information for users, hosts or Tables with contact information for users, hosts or
domains that no longer exist. See <a href="relocated.5.html"><b>relocated</b>(5)</a>. domains that no longer exist. See <a href="relocated.5.html"><b>relocated</b>(5)</a>.
@ -252,10 +256,6 @@ QMGR(8) QMGR(8)
Time in seconds between attempts to contact a bro- Time in seconds between attempts to contact a bro-
ken delivery transport. ken delivery transport.
<b>Concurrency</b> <b>controls</b>
In the text below, <i>transport</i> is the first field in a <b>mas-</b>
<b>ter.cf</b> entry.
@ -269,6 +269,26 @@ QMGR(8) QMGR(8)
QMGR(8) QMGR(8) QMGR(8) QMGR(8)
<b>Concurrency</b> <b>controls</b>
In the text below, <i>transport</i> is the first field in a <b>mas-</b>
<b>ter.cf</b> entry.
<b>qmgr</b><i>_</i><b>fudge</b><i>_</i><b>factor</b> (valid range: 10..100)
The percentage of delivery resources that a busy
mail system will use up for delivery of a large
mailing list message. With 100%, delivery of one
message does not begin before the previous message
has been delivered. This results in good perfor-
mance for large mailing lists, but results in poor
response time for one-to-one mail. With less than
100%, response time for one-to-one mail improves,
but large mailing list delivery performance suf-
fers. In the worst case, recipients near the begin-
ning of a large list receive a burst of messages
immediately, while recipients near the end of that
list receive that same burst of messages a whole
day later.
<b>initial</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b> <b>initial</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b>
Initial per-destination concurrency level for par- Initial per-destination concurrency level for par-
allel delivery to the same destination. allel delivery to the same destination.
@ -303,6 +323,18 @@ QMGR(8) QMGR(8)
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>
Wietse Venema Wietse Venema
5
QMGR(8) QMGR(8)
IBM T.J. Watson Research IBM T.J. Watson Research
P.O. Box 704 P.O. Box 704
Yorktown Heights, NY 10598, USA Yorktown Heights, NY 10598, USA
@ -326,7 +358,41 @@ QMGR(8) QMGR(8)
5
6
</pre> </body> </html> </pre> </body> </html>

View File

@ -109,6 +109,12 @@ SMTPD(8) SMTPD(8)
<b>notify</b><i>_</i><b>classes</b> <b>notify</b><i>_</i><b>classes</b>
List of error classes. Of special interest are: List of error classes. Of special interest are:
<b>local</b><i>_</i><b>recipient</b><i>_</i><b>maps</b>
List of maps with user names that are local to
<b>$myorigin</b> or <b>$inet</b><i>_</i><b>interfaces</b>. If this parameter is
defined, then the SMTP server rejects mail for
unknown local users.
<b>policy</b> When a client violates any policy, mail a <b>policy</b> When a client violates any policy, mail a
transcript of the entire SMTP session to the transcript of the entire SMTP session to the
postmaster. postmaster.
@ -119,12 +125,6 @@ SMTPD(8) SMTPD(8)
transcript of the entire SMTP session to the transcript of the entire SMTP session to the
postmaster. postmaster.
<b>smtpd</b><i>_</i><b>banner</b>
Text that follows the <b>220</b> status code in the SMTP
greeting banner.
<b>smtpd</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
Restrict the number of recipients that the SMTP
@ -137,6 +137,12 @@ SMTPD(8) SMTPD(8)
SMTPD(8) SMTPD(8) SMTPD(8) SMTPD(8)
<b>smtpd</b><i>_</i><b>banner</b>
Text that follows the <b>220</b> status code in the SMTP
greeting banner.
<b>smtpd</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
Restrict the number of recipients that the SMTP
server accepts per message delivery. server accepts per message delivery.
<b>smtpd</b><i>_</i><b>timeout</b> <b>smtpd</b><i>_</i><b>timeout</b>
@ -184,13 +190,7 @@ SMTPD(8) SMTPD(8)
Restrict what client hostnames are allowed in <b>HELO</b> Restrict what client hostnames are allowed in <b>HELO</b>
and <b>EHLO</b> commands. and <b>EHLO</b> commands.
<b>smtpd</b><i>_</i><b>sender</b><i>_</i><b>restrictions</b>
Restrict what sender addresses are allowed in <b>MAIL</b>
<b>FROM</b> commands.
<b>smtpd</b><i>_</i><b>recipient</b><i>_</i><b>restrictions</b>
Restrict what recipient addresses are allowed in
<b>RCPT</b> <b>TO</b> commands.
@ -203,6 +203,14 @@ SMTPD(8) SMTPD(8)
SMTPD(8) SMTPD(8) SMTPD(8) SMTPD(8)
<b>smtpd</b><i>_</i><b>sender</b><i>_</i><b>restrictions</b>
Restrict what sender addresses are allowed in <b>MAIL</b>
<b>FROM</b> commands.
<b>smtpd</b><i>_</i><b>recipient</b><i>_</i><b>restrictions</b>
Restrict what recipient addresses are allowed in
<b>RCPT</b> <b>TO</b> commands.
<b>smtpd</b><i>_</i><b>etrn</b><i>_</i><b>restrictions</b> <b>smtpd</b><i>_</i><b>etrn</b><i>_</i><b>restrictions</b>
Restrict what domain names can be used in <b>ETRN</b> com- Restrict what domain names can be used in <b>ETRN</b> com-
mands, and what clients may issue <b>ETRN</b> commands. mands, and what clients may issue <b>ETRN</b> commands.
@ -249,14 +257,6 @@ SMTPD(8) SMTPD(8)
<b>unknown</b><i>_</i><b>client</b><i>_</i><b>reject</b><i>_</i><b>code</b> <b>unknown</b><i>_</i><b>client</b><i>_</i><b>reject</b><i>_</i><b>code</b>
Server response when a client without address to Server response when a client without address to
name mapping violates the <b>reject</b><i>_</i><b>unknown</b><i>_</i><b>clients</b> name mapping violates the <b>reject</b><i>_</i><b>unknown</b><i>_</i><b>clients</b>
restriction.
<b>unknown</b><i>_</i><b>hostname</b><i>_</i><b>reject</b><i>_</i><b>code</b>
Server response when a client violates the
<b>reject</b><i>_</i><b>unknown</b><i>_</i><b>hostname</b> restriction.
<b>SEE</b> <b>ALSO</b>
<a href="cleanup.8.html">cleanup(8)</a> message canonicalization
@ -269,6 +269,14 @@ SMTPD(8) SMTPD(8)
SMTPD(8) SMTPD(8) SMTPD(8) SMTPD(8)
restriction.
<b>unknown</b><i>_</i><b>hostname</b><i>_</i><b>reject</b><i>_</i><b>code</b>
Server response when a client violates the
<b>reject</b><i>_</i><b>unknown</b><i>_</i><b>hostname</b> restriction.
<b>SEE</b> <b>ALSO</b>
<a href="cleanup.8.html">cleanup(8)</a> message canonicalization
<a href="master.8.html">master(8)</a> process manager <a href="master.8.html">master(8)</a> process manager
syslogd(8) system logging syslogd(8) system logging
@ -309,14 +317,6 @@ SMTPD(8) SMTPD(8)

View File

@ -26,9 +26,9 @@ unsolicited commercial email (UCE).
<p> <p>
By default, the Postfix <a href="smtpd.8.html">SMTP server</a> will By default, the Postfix <a href="smtpd.8.html">SMTP server</a> will
accept mail only from or to the local network or domain, so that accept mail only from or to the local network or domain, or to
your system can't be used as a mail relay to forward bulk mail from domains that are hosted by Postfix, so that your system can't be
random strangers. used as a mail relay to forward bulk mail from random strangers.
<p> <p>
@ -48,7 +48,7 @@ command.
<p> <p>
<li> <a href="#smtpd_client_restrictions">Client name/address <li> <a href="#smtpd_client_restrictions">Client hostname/address
restrictions</a> restrictions</a>
<p> <p>
@ -62,6 +62,11 @@ restrictions</a>
<p> <p>
<li> <a href="#strict_rfc821_envelopes">Require strict RFC 821-style
envelope addresses </a>
<p>
<li> <a href="#smtpd_sender_restrictions">Sender address restrictions <li> <a href="#smtpd_sender_restrictions">Sender address restrictions
</a> </a>
@ -108,15 +113,16 @@ matches a table, a REJECT result means reject the message.
<p> <p>
<i>A rule ending in OK affects only the header being matched. The <i>At present, specifying a header pattern with OK serves no useful
next header may still result in a REJECT match, causing the mail purpose. A rule ending in OK affects only the header being matched.
still to be rejected.</i> The next header may still result in a REJECT match, causing the
mail still to be rejected.</i>
</dl> </dl>
<p> <p>
<dt>Examples: <dt>Examples (main.cf):
<dd> <b>header_checks = regexp:/etc/postfix/header_checks</b> <dd> <b>header_checks = regexp:/etc/postfix/header_checks</b>
@ -124,9 +130,15 @@ still to be rejected.</i>
<p> <p>
<dt>Example (header_checks):
<dd> /^to: *friend@public\.com$/ REJECT
<p>
<a name="smtpd_client_restrictions"> <a name="smtpd_client_restrictions">
<h2> Client name/address restrictions</h2> <h2> Client hostname/address restrictions</h2>
The <b>smtpd_client_restrictions</b> parameter restricts what The <b>smtpd_client_restrictions</b> parameter restricts what
clients this system accepts SMTP connections from. clients this system accepts SMTP connections from.
@ -168,7 +180,7 @@ reject_unknown_client</b>
<a name="reject_unknown_client"> <a name="reject_unknown_client">
<dt> <b>reject_unknown_client</b> <dd> Reject the request when the <dt> <b>reject_unknown_client</b> <dd> Reject the request when the
client address to name lookup failed. The client IP address has no PTR record in the DNS. The
<b>unknown_client_reject_code</b> parameter specifies the response <b>unknown_client_reject_code</b> parameter specifies the response
code to rejected requests (default: <b>450</b>). code to rejected requests (default: <b>450</b>).
@ -177,7 +189,7 @@ code to rejected requests (default: <b>450</b>).
<a name="permit_mynetworks"> <a name="permit_mynetworks">
<dt> <b>permit_mynetworks</b> <dd> Permit the request when the <dt> <b>permit_mynetworks</b> <dd> Permit the request when the
client address matches any network listed in <a client IP address matches any network listed in <a
href="basic.html#mynetworks"> $mynetworks</a>. href="basic.html#mynetworks"> $mynetworks</a>.
<p> <p>
@ -187,8 +199,8 @@ href="basic.html#mynetworks"> $mynetworks</a>.
<dt> <b>check_client_access</b> <i>maptype</i>:<i>mapname</i> <dt> <b>check_client_access</b> <i>maptype</i>:<i>mapname</i>
<dt> <i>maptype</i>:<i>mapname</i> <dd> Search the named <a <dt> <i>maptype</i>:<i>mapname</i> <dd> Search the named <a
href="access.5.html">access database</a> for the client name, parent href="access.5.html">access database</a> for the client hostname, parent
domains, client address, or networks obtained by stripping least domains, client IP address, or networks obtained by stripping least
significant octets. Reject the request if the result is <b>REJECT</b> significant octets. Reject the request if the result is <b>REJECT</b>
or "[<b>45</b>]<i>XX text</i>". Permit the request if the result or "[<b>45</b>]<i>XX text</i>". Permit the request if the result
is <b>OK</b> or <b>RELAY</b> or all-numerical. Otherwise, treat the is <b>OK</b> or <b>RELAY</b> or all-numerical. Otherwise, treat the
@ -225,7 +237,7 @@ rejected requests (default: <b>554</b>).
<h2> Require HELO (EHLO) command</h2> <h2> Require HELO (EHLO) command</h2>
The <b>smtpd_helo_required</b> parameter determines if clients must The <b>smtpd_helo_required</b> parameter determines if clients must
send a <b>HELO</b> (<b>EHLO</b>) command at the beginning of an send a <b>HELO</b> (or <b>EHLO</b>) command at the beginning of an
SMTP session. Requiring this will stop some UCE software. SMTP session. Requiring this will stop some UCE software.
<p> <p>
@ -264,7 +276,7 @@ UCE software can be stopped by being strict here.
<dt>Default: <dt>Default:
<dd>By default, the Postfix <a href="smtpd.8.html">SMTP server</a> <dd>By default, the Postfix <a href="smtpd.8.html">SMTP server</a>
accepts any hostname. accepts any garbage in the <b>HELO</b> (<b>EHLO</b>) command.
<p> <p>
@ -297,7 +309,7 @@ on the client hostname or network address.
<a name="reject_invalid_hostname"> <a name="reject_invalid_hostname">
<dt> <b>reject_invalid_hostname</b> <dd> Reject the request when <dt> <b>reject_invalid_hostname</b> <dd> Reject the request when
the client HELO and EHLO command has a bad hostname syntax. The the client HELO or EHLO parameter has a bad hostname syntax. The
<b>invalid_hostname_reject_code</b> specifies the response code to <b>invalid_hostname_reject_code</b> specifies the response code to
rejected requests (default: 501). rejected requests (default: 501).
@ -326,8 +338,9 @@ response code to rejected requests (default: <b>450</b>).
<dt> <b>reject_non_fqdn_hostname</b> <dd> Reject the request when <dt> <b>reject_non_fqdn_hostname</b> <dd> Reject the request when
the hostname in the client HELO (EHLO) command is not in fully-qualified the hostname in the client HELO (EHLO) command is not in fully-qualified
domain form. The <b>non_fqdn_reject_code</b> specifies the domain form, as required by the RFC. The <b>non_fqdn_reject_code</b>
response code to rejected requests (default: <b>504</b>). specifies the response code to rejected requests (default:
<b>504</b>).
<p> <p>
@ -354,7 +367,7 @@ the response code for <b>REJECT</b> results (default: <b>554</b>).
<dt> <b><a href="#check_client_access">check_client_access</a></b> <i>maptype</i>:<i>mapname</i> <dt> <b><a href="#check_client_access">check_client_access</a></b> <i>maptype</i>:<i>mapname</i>
<dd> See client name/address restrictions. <dd> See client hostname/address restrictions.
<p> <p>
@ -370,6 +383,34 @@ the response code for <b>REJECT</b> results (default: <b>554</b>).
</dl> </dl>
<a name="strict_rfc821_envelopes">
<h2> Require strict RFC 821-style envelope addresses </h2>
The <b>strict_rfc821_envelopes</b> parameter controls how tolerant
Postfix is with respect to addresses given in MAIL FROM or RCPT TO
commands. Being strict to the RFC not only stops unwanted mail,
but also blocks legitimate mail from poorly-written mail applications.
<p>
<dl>
<dt> Default:
<dd>By default, the Postfix <a href="smtpd.8.html">SMTP server</a>
accepts any address form that it can make sense of, including forms
that contain RFC 822-style comments, or addresses not enclosed in
&lt;&gt;.
<p>
<dt> Example:
<dd><b>strict_rfc821_envelopes = yes</b>
</dl>
<a name="smtpd_sender_restrictions"> <a name="smtpd_sender_restrictions">
<h2> Sender address restrictions</h2> <h2> Sender address restrictions</h2>
@ -469,7 +510,7 @@ response code to rejected requests (default: <b>504</b>).
<dt> <b><a href="#check_client_access">check_client_access</a></b> <i>maptype</i>:<i>mapname</i> <dt> <b><a href="#check_client_access">check_client_access</a></b> <i>maptype</i>:<i>mapname</i>
<dd> See client name/address restrictions. <dd> See client hostname/address restrictions.
<p> <p>
@ -497,10 +538,20 @@ recipient addresses this system accepts in RCPT TO commands.
<dt>Default: <dt>Default:
<dd>By default, the Postfix <a href="smtpd.8.html">SMTP server</a> <dd>By default, the Postfix <a href="smtpd.8.html">SMTP server</a>
forwards mail from any client that matches <a relays mail from any client whose IP address matches <a
href="basic.html#mynetworks">$mynetworks</a> or <a href="basic.html#mynetworks">$mynetworks</a> or whose hostname
href="#relay_domains">$relay_domains</a>, or to any destination matches <a href="#relay_domains">$relay_domains</a> or a subdomain
that matches <a href="#relay_domains"> $relay_domains</a>. thereof, and relays mail to any destination that matches <a
href="#relay_domains"> $relay_domains</a> or a subdomain thereof.
<p>
In addition, the Postfix <a href="smtpd.8.html">SMTP server</a> by
default accepts mail for which Postfix is the final destination:
anything that matches <a href="basic.html#mydomain">$mydomain</a>,
<a href="basic.html#mynetworks">$mynetworks</a> or <a
href="virtual.5.html">$virtual_maps</a>, or anything that resolves
to a mail delivery transport whose name is listed in $local_transports.
<p> <p>
@ -536,12 +587,16 @@ reject_unauth_destination</b>
<a name="check_relay_domains"> <a name="check_relay_domains">
<dt> <b>check_relay_domains</b> <dd> Permit the request when the <dt> <b>check_relay_domains</b> <dd> Permit the request when the
client hostname matches <a href="#relay_domains">$relay_domains</a>, client hostname matches <a href="#relay_domains">$relay_domains</a>
or when the resolved destination address matches <a or a subdomain thereof, or when the resolved destination address
href="basic.html#mydestination">$mydestination</a>, the machine IP matches <a href="#relay_domains">$relay_domains</a> or a subdomain
addresses, or <a href="#relay_domains"> $relay_domains</a>, otherwise thereof, or when Postfix is the final destination: anything that
reject the request. The <b>relay_domains_reject_code</b> parameter matches <a href="basic.html#mydomain">$mydomain</a>, <a
specifies the response code for rejected requests (default: href="basic.html#mynetworks">$mynetworks</a> or <a
href="virtual.5.html">$virtual_maps</a>, or anything that resolves
to a mail delivery transport whose name is listed in $local_transports.
Otherwise reject the request. The <b>relay_domains_reject_code</b>
parameter specifies the response code for rejected requests (default:
<b>554</b>). <b>554</b>).
<p> <p>
@ -550,8 +605,12 @@ specifies the response code for rejected requests (default:
<dt> <b>permit_auth_destination</b> <dd> Ignore the client hostname. <dt> <b>permit_auth_destination</b> <dd> Ignore the client hostname.
Permit the request when the resolved destination address matches Permit the request when the resolved destination address matches
<a href="basic.html#mydestination">$mydestination</a>, the <a href="#relay_domains"> $relay_domains</a> or a subdomain thereof,
machine IP addresses, or <a href="#relay_domains"> $relay_domains</a>. or when Postfix is the final destination: anything that matches
<a href="basic.html#mydomain">$mydomain</a>, <a
href="basic.html#mynetworks">$mynetworks</a> or <a
href="virtual.5.html">$virtual_maps</a>, or anything that resolves
to a mail delivery transport whose name is listed in $local_transports.
<p> <p>
@ -559,8 +618,13 @@ machine IP addresses, or <a href="#relay_domains"> $relay_domains</a>.
<dt> <b>reject_unauth_destination</b> <dd> Ignore the client <dt> <b>reject_unauth_destination</b> <dd> Ignore the client
hostname. Reject the request when the resolved destination address hostname. Reject the request when the resolved destination address
does not match <a href="basic.html#mydestination">$mydestination</a>, does not match <a href="#relay_domains"> $relay_domains</a> or a
the machine IP addresses, or <a href="#relay_domains"> $relay_domains</a>. subdomain thereof, and when Postfix is not the final destination.
Postfix is final destination for anything that matches <a
href="basic.html#mydomain">$mydomain</a>, <a
href="basic.html#mynetworks">$mynetworks</a> or <a
href="virtual.5.html">$virtual_maps</a>, or anything that resolves
to a mail delivery transport whose name is listed in $local_transports.
The <b>relay_domains_reject_code</b> parameter specifies the response The <b>relay_domains_reject_code</b> parameter specifies the response
code for rejected requests (default: <b>554</b>). code for rejected requests (default: <b>554</b>).
@ -651,7 +715,7 @@ useful results with the <a href="aliases.5.html">aliases</a> and
<dt> <b><a href="#check_client_access">check_client_access</a></b> <i>maptype</i>:<i>mapname</i> <dt> <b><a href="#check_client_access">check_client_access</a></b> <i>maptype</i>:<i>mapname</i>
<dd> See client name/address restrictions. <dd> See client hostname/address restrictions.
<p> <p>
@ -744,7 +808,7 @@ the result code for rejected requests (default: <b>554</b>).
<dt> <b><a href="#check_client_access">check_client_access</a></b> <i>maptype</i>:<i>mapname</i> <dt> <b><a href="#check_client_access">check_client_access</a></b> <i>maptype</i>:<i>mapname</i>
<dd> See client name/address restrictions. <dd> See client hostname/address restrictions.
<p> <p>
@ -818,7 +882,7 @@ to speed up deliveries.
<dd>This parameter controls the behavior of the <a <dd>This parameter controls the behavior of the <a
href="#reject_maps_rbl">reject_maps_rbl</a> restriction that can href="#reject_maps_rbl">reject_maps_rbl</a> restriction that can
appear as part of a client name/address restriction list. appear as part of a client hostname/address restriction list.
<p> <p>
@ -836,7 +900,7 @@ Note: RBL lookups are disabled by default.
<dt>Syntax: <dt>Syntax:
<dd> Zero or more DNS domains that blacklist client addresses. A <dd> Zero or more DNS domains that blacklist client IP addresses. A
host is blacklisted when its reversed IP address is listed as a host is blacklisted when its reversed IP address is listed as a
subdomain under any of the domains listed in <b>$maps_rbl_domains.</b> subdomain under any of the domains listed in <b>$maps_rbl_domains.</b>

View File

@ -37,9 +37,8 @@ VIRTUAL(5) VIRTUAL(5)
<i>user2@virtual.domain</i> <i>address2,</i> <i>address3</i> <i>user2@virtual.domain</i> <i>address2,</i> <i>address3</i>
With this, the SMTP server accepts mail for <i>virtual.domain</i> With this, the SMTP server accepts mail for <i>virtual.domain</i>
(provided that the <b>relay</b><i>_</i><b>domains</b> parameter includes $<b>vir-</b> and rejects mail for <i>unknown</i>@<i>virtual.domain</i> as undeliver-
<b>tual</b><i>_</i><b>maps</b>), and mail for <i>unknown</i>@<i>virtual.domain</i> is bounced able.
as undeliverable.
The format of the virtual table is as follows, mappings The format of the virtual table is as follows, mappings
being tried in the order as listed in this manual page: being tried in the order as listed in this manual page:
@ -59,6 +58,7 @@ VIRTUAL(5) VIRTUAL(5)
$<i>inet_interfaces</i>. $<i>inet_interfaces</i>.
This functionality overlaps with functionality of This functionality overlaps with functionality of
the local <i>alias</i>(5) database. The difference is that
@ -71,7 +71,6 @@ VIRTUAL(5) VIRTUAL(5)
VIRTUAL(5) VIRTUAL(5) VIRTUAL(5) VIRTUAL(5)
the local <i>alias</i>(5) database. The difference is that
<b>virtual</b> mapping can be applied to non-local <b>virtual</b> mapping can be applied to non-local
addresses. addresses.
@ -124,7 +123,8 @@ VIRTUAL(5) VIRTUAL(5)
<a href="cleanup.8.html">cleanup(8)</a> canonicalize and enqueue mail <a href="cleanup.8.html">cleanup(8)</a> canonicalize and enqueue mail
<a href="postmap.1.html">postmap(1)</a> create mapping table <a href="postmap.1.html">postmap(1)</a> create mapping table
<b>LICENSE</b>
The Secure Mailer license must be distributed with this
@ -137,8 +137,6 @@ VIRTUAL(5) VIRTUAL(5)
VIRTUAL(5) VIRTUAL(5) VIRTUAL(5) VIRTUAL(5)
<b>LICENSE</b>
The Secure Mailer license must be distributed with this
software. software.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>
@ -191,6 +189,8 @@ VIRTUAL(5) VIRTUAL(5)

View File

@ -37,10 +37,8 @@ Typical support for a virtual domain looks like the following:
.fi .fi
.in -4 .in -4
With this, the SMTP server accepts mail for \fIvirtual.domain\fR With this, the SMTP server accepts mail for \fIvirtual.domain\fR and
(provided that the \fBrelay_domains\fR parameter includes rejects mail for \fIunknown\fR@\fIvirtual.domain\fR as undeliverable.
$\fBvirtual_maps\fR), and mail for \fIunknown\fR@\fIvirtual.domain\fR
is bounced as undeliverable.
The format of the virtual table is as follows, mappings being The format of the virtual table is as follows, mappings being
tried in the order as listed in this manual page: tried in the order as listed in this manual page:

View File

@ -169,6 +169,8 @@ a configuration change.
.SH Miscellaneous .SH Miscellaneous
.ad .ad
.fi .fi
.IP \fBallow_min_user\fR
Do not bounce recipient addresses that begin with '-'.
.IP \fBrelocated_maps\fR .IP \fBrelocated_maps\fR
Tables with contact information for users, hosts or domains Tables with contact information for users, hosts or domains
that no longer exist. See \fBrelocated\fR(5). that no longer exist. See \fBrelocated\fR(5).
@ -210,6 +212,17 @@ delivery transport.
.fi .fi
In the text below, \fItransport\fR is the first field in a In the text below, \fItransport\fR is the first field in a
\fBmaster.cf\fR entry. \fBmaster.cf\fR entry.
.IP "\fBqmgr_fudge_factor\fR (valid range: 10..100)"
The percentage of delivery resources that a busy mail system will
use up for delivery of a large mailing list message.
With 100%, delivery of one message does not begin before the previous
message has been delivered. This results in good performance for large
mailing lists, but results in poor response time for one-to-one mail.
With less than 100%, response time for one-to-one mail improves,
but large mailing list delivery performance suffers. In the worst
case, recipients near the beginning of a large list receive a burst
of messages immediately, while recipients near the end of that list
receive that same burst of messages a whole day later.
.IP \fBinitial_destination_concurrency\fR .IP \fBinitial_destination_concurrency\fR
Initial per-destination concurrency level for parallel delivery Initial per-destination concurrency level for parallel delivery
to the same destination. to the same destination.

View File

@ -95,6 +95,10 @@ Recipient of protocol/policy/resource/software error notices.
Limit the number of \fBReceived:\fR message headers. Limit the number of \fBReceived:\fR message headers.
.IP \fBnotify_classes\fR .IP \fBnotify_classes\fR
List of error classes. Of special interest are: List of error classes. Of special interest are:
.IP \fBlocal_recipient_maps\fR
List of maps with user names that are local to \fB$myorigin\fR
or \fB$inet_interfaces\fR. If this parameter is defined,
then the SMTP server rejects mail for unknown local users.
.RS .RS
.IP \fBpolicy\fR .IP \fBpolicy\fR
When a client violates any policy, mail a transcript of the When a client violates any policy, mail a transcript of the

View File

@ -121,15 +121,21 @@
/* .IP check_relay_domains /* .IP check_relay_domains
/* Allow the request when either the client hostname or the resolved /* Allow the request when either the client hostname or the resolved
/* recipient domain matches the \fIrelay_domains\fR configuration /* recipient domain matches the \fIrelay_domains\fR configuration
/* parameter. Reject the request otherwise. /* parameter or a subdomain therereof, or when the destination somehow
/* resolves locally (see $mydestination, $virtual_maps or
/* $local_transports). Reject the request otherwise.
/* The \fIrelay_domains_reject_code\fR configuration parameter specifies /* The \fIrelay_domains_reject_code\fR configuration parameter specifies
/* the reject status code (default: 554). /* the reject status code (default: 554).
/* .IP permit_auth_destination /* .IP permit_auth_destination
/* Permit the request when the resolved recipient domain matches /* Permit the request when the resolved recipient domain matches the
/* the local machine or the \fIrelay_domains\fR configuration parameter. /* \fIrelay_domains\fR configuration parameter or a subdomain therereof,
/* or when the destination somehow resolves locally (see $mydestination,
/* $virtual_maps or $local_transports).
/* .IP reject_unauth_destination /* .IP reject_unauth_destination
/* Reject the request when the resolved recipient domain does not match /* Reject the request when the resolved recipient domain does not match
/* the local machine or the \fIrelay_domains\fR configuration parameter. /* the \fIrelay_domains\fR configuration parameter or a subdomain
/* therereof, and when the destination does not somehow resolve locally
/* (see $mydestination, $virtual_maps or $local_transports).
/* Same error code as check_relay_domains. /* Same error code as check_relay_domains.
/* .IP reject_unauth_pipelining /* .IP reject_unauth_pipelining
/* Reject the request when the client has already sent the next request /* Reject the request when the client has already sent the next request
@ -721,13 +727,17 @@ static int check_relay_domains(SMTPD_STATE *state, char *recipient,
resolve_clnt_query(STR(query), &reply); resolve_clnt_query(STR(query), &reply);
/* /*
* Permit if destination is local. XXX This must be generalized for * Permit if destination is local. That is, the destination matches
* per-domain user tables and for non-UNIX local delivery agents. * mydestination or virtual_maps, or it resolves to any transport that
* delivers locally.
*/ */
if (match_any_local_transport(STR(reply.transport)) if (match_any_local_transport(STR(reply.transport))
|| (domain = strrchr(STR(reply.recipient), '@')) == 0) || (domain = strrchr(STR(reply.recipient), '@')) == 0)
return (SMTPD_CHECK_OK); return (SMTPD_CHECK_OK);
domain += 1; domain += 1;
if (resolve_local(domain)
|| (*var_virtual_maps && maps_find(virtual_maps, domain, 0)))
return (SMTPD_CHECK_OK);
/* /*
* Permit if the destination matches the relay_domains list. * Permit if the destination matches the relay_domains list.
@ -760,13 +770,17 @@ static int permit_auth_destination(char *recipient)
resolve_clnt_query(STR(query), &reply); resolve_clnt_query(STR(query), &reply);
/* /*
* Permit if destination is local. XXX This must be generalized for * Permit if destination is local. That is, the destination matches
* per-domain user tables and for non-UNIX local delivery agents. * mydestination or virtual_maps, or it resolves to any transport that
* delivers locally.
*/ */
if (match_any_local_transport(STR(reply.transport)) if (match_any_local_transport(STR(reply.transport))
|| (domain = strrchr(STR(reply.recipient), '@')) == 0) || (domain = strrchr(STR(reply.recipient), '@')) == 0)
return (SMTPD_CHECK_OK); return (SMTPD_CHECK_OK);
domain += 1; domain += 1;
if (resolve_local(domain)
|| (*var_virtual_maps && maps_find(virtual_maps, domain, 0)))
return (SMTPD_CHECK_OK);
/* /*
* Permit if the destination matches the relay_domains list. * Permit if the destination matches the relay_domains list.
@ -797,13 +811,17 @@ static int reject_unauth_destination(SMTPD_STATE *state, char *recipient)
resolve_clnt_query(STR(query), &reply); resolve_clnt_query(STR(query), &reply);
/* /*
* Pass if destination is local. XXX This must be generalized for * Permit if destination is local. That is, the destination matches
* per-domain user tables and for non-UNIX local delivery agents. * mydestination or virtual_maps, or it resolves to any transport that
* delivers locally.
*/ */
if (match_any_local_transport(STR(reply.transport)) if (match_any_local_transport(STR(reply.transport))
|| (domain = strrchr(STR(reply.recipient), '@')) == 0) || (domain = strrchr(STR(reply.recipient), '@')) == 0)
return (SMTPD_CHECK_DUNNO); return (SMTPD_CHECK_DUNNO);
domain += 1; domain += 1;
if (resolve_local(domain)
|| (*var_virtual_maps && maps_find(virtual_maps, domain, 0)))
return (SMTPD_CHECK_DUNNO);
/* /*
* Pass if the destination matches the relay_domains list. * Pass if the destination matches the relay_domains list.
@ -907,7 +925,8 @@ static int permit_mx_backup(SMTPD_STATE *unused_state, const char *recipient)
|| (domain = strrchr(STR(reply.recipient), '@')) == 0) || (domain = strrchr(STR(reply.recipient), '@')) == 0)
return (SMTPD_CHECK_OK); return (SMTPD_CHECK_OK);
domain += 1; domain += 1;
if (resolve_local(domain)) if (resolve_local(domain)
|| (*var_virtual_maps && maps_find(virtual_maps, domain, 0)))
return (SMTPD_CHECK_OK); return (SMTPD_CHECK_OK);
if (msg_verbose) if (msg_verbose)
@ -1041,6 +1060,9 @@ static int reject_unknown_address(SMTPD_STATE *state, char *addr,
|| (domain = strrchr(STR(reply.recipient), '@')) == 0) || (domain = strrchr(STR(reply.recipient), '@')) == 0)
return (SMTPD_CHECK_DUNNO); return (SMTPD_CHECK_DUNNO);
domain += 1; domain += 1;
if (resolve_local(domain)
|| (*var_virtual_maps && maps_find(virtual_maps, domain, 0)))
return (SMTPD_CHECK_DUNNO);
if (domain[0] == '#') if (domain[0] == '#')
return (SMTPD_CHECK_DUNNO); return (SMTPD_CHECK_DUNNO);
if (domain[0] == '[' && domain[strlen(domain) - 1] == ']') if (domain[0] == '[' && domain[strlen(domain) - 1] == ']')