]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
snapshot-20011125
authorWietse Venema <wietse@porcupine.org>
Sun, 25 Nov 2001 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:27:38 +0000 (06:27 +0000)
17 files changed:
postfix/HISTORY
postfix/LMTP_README
postfix/RELEASE_NOTES
postfix/conf/sample-smtpd.cf
postfix/html/faq.html
postfix/html/sendmail.1.html
postfix/html/smtpd.8.html
postfix/html/uce.html
postfix/makedefs
postfix/man/man1/sendmail.1
postfix/man/man8/smtpd.8
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/sendmail/sendmail.c
postfix/src/smtpd/smtpd.c
postfix/src/smtpd/smtpd_check.c
postfix/src/util/sys_defs.h

index 8dee622e0dd1b6c9f9ea6eb434c47c554e1b5525..89100032f985bf1ab61f2d952225ad027a1a836d 100644 (file)
@@ -5665,6 +5665,31 @@ Apologies for any names omitted.
        Bugfix: missing long integer support in the new IPC protocols.
        Files: util/attr_scan*.c, util/attr_print*.c.
 
+       Portability: AIX5 (Adrian P. van Bloois), MAC OS X 10.1.1
+       (Gerben Wierda).
+
+20011125
+
+       Bugfix: spurious postmaster notifications because some flag
+       was not reset.
+
+       Feature: new parameter smtpd_sender_login_maps that specifies
+       the (SASL) login name that owns a MAIL FROM address.
+       Specify a regexp table in order to require a simple one-to-one
+       mapping. This is used in the reject_sender_login_mismatch
+       sender anti-spoofing feature.
+
+       Feature: restriction reject_sender_login_mismatch refuses
+       a MAIL FROM address when $smtpd_sender_login_maps specifies
+       an owner but the client is not (SASL) logged in as the MAIL
+       FROM address owner, or when a client is (SASL) logged in
+       but the client login name does not own the MAIL FROM address
+       according to $smtpd_sender_login_maps.  File: smtpd/smpd_check.c.
+
+       Documentation: added some redundancy to the LMTP_README
+       file so people can keep track of the difference between
+       the Postfix LMTP client and the non-Postfix LMTP server.
+
 Open problems:
 
        Medium: need in-process caching for map lookups. LDAP
index e6320db861354bd61d388351e4dd469c83706015..36ea8ea360a6f2ccca6bcd00004c5178afeb361a 100644 (file)
@@ -48,11 +48,17 @@ There are a variety of ways LMTP delivery can be configured in
 Postfix.  The two basic flavors are delivery over UNIX-domain
 sockets and delivery over TCP sockets.
 
-  o Connections over UNIX-domain sockets limit delivery to LMTP
-    servers running on the same machine.
+  o Connections from the Postfix LMTP client over UNIX-domain
+    sockets allow you to deliver to non-Postfix LMTP servers running
+    on the same machine.
 
-  o Connections over TCP sockets allow you to deliver to LMTP
-    servers across a local network.
+  o Connections from the Postfix LMTP client over TCP sockets allow
+    you to deliver to non-Postfix LMTP servers across a local
+    network.
+
+Note: the above is not to be confused with the UNIX-domain sockets
+that Postfix uses internally to speak its own protocols with the
+Postfix LMTP client.
 
 The precise syntax for UNIX-domain and TCP connection endpoints is
 given in the lmtp(8) manual page. Examples are also given in the
@@ -69,6 +75,9 @@ in convenience and in performance with these different approaches.
 3 - LMTP over UNIX-domain sockets
 =================================
 
+Use this to deliver mail from the Postfix LMTP client to an LMTP
+server that is running on the same system.
+
 A UNIX-domain socket is specified as the socket type ("unix") and
 a name in the local file system:
 
@@ -80,9 +89,9 @@ later in this document.
 
 NOTE:
 
-    If you run the lmtp client chrooted, the interpretation of the
-    /path/name is relative to the Postfix queue directory (typically,
-    /var/spool/postfix).
+    If you run the Postfix LMTP client chrooted, the interpretation
+    of the /path/name is relative to the Postfix queue directory
+    (typically, /var/spool/postfix).
 
     By default, the Postfix LMTP client does not run chrooted.
     With LMTP delivery to the local machine there is no good reason
@@ -91,6 +100,9 @@ NOTE:
 4 - LMTP over TCP sockets
 =========================
 
+Use this to deliver mail from the Postfix LMTP client to an LMTP
+server that is running on the same system or on a different system.
+
 A TCP destination is specified as the socket type ("inet"), the
 destination hostname and the TCP port:
 
@@ -125,9 +137,9 @@ This is the simplest LMTP configuration.
 5.1 - Delivery mechanisms
 -------------------------
 
-Postfix main.cf supports three mechanisms to deliver mail over
-LMTP.  Each method can use UNIX-domain or TCP sockets as described
-in a later section.
+Postfix main.cf supports three mechanisms to deliver mail to an
+LMTP server.  Each method can use UNIX-domain or TCP sockets as
+described in a later section.
 
 main.cf mechanism 1
 -------------------
@@ -138,7 +150,8 @@ mailbox_transport = lmtp:hostname:port   (TCP socket example)
 Mail that resolves as local (domain is listed in $mydestination)
 is given to the Postfix local delivery agent.  The Postfix local
 delivery agent expands aliases and .forward files, and delegates
-mailbox delivery to the LMTP server.
+mailbox delivery to the Postfix LMTP client which then sends it to
+the non-Postfix LMTP server.
 
 main.cf mechanism 2
 -------------------
@@ -147,9 +160,10 @@ local_transport = lmtp:unix:/path/name (UNIX-domain socket example)
 local_transport = lmtp:hostname:port   (TCP socket example)
 
 Mail that resolves as local (domain is listed in $mydestination)
-is directly given to the LMTP server.  The mail is not processed
-by the Postfix local delivery agent; therefore aliases and .forward
-files are not processed.
+is directly given to the Postfix LMTP client which then sends it
+to the non-Postfix LMTP server.  The mail is not processed by the
+Postfix local delivery agent; therefore aliases and .forward files
+are not processed.
 
 main.cf mechanism 3
 -------------------
@@ -161,7 +175,8 @@ Mail that resolves as local (domain is listed in $mydestination)
 is given to the Postfix local delivery agent.  The Postfix local
 delivery agent processes aliases and .forward files, and delivers
 to /var[/spool]/mail/$user for users that have a UNIX account.
-Mail for other local users is delegated to the LMTP server.
+Mail for other local users is delegated to the Postfix LMTP client
+which then sends it to the non-Postfix LMTP server.
 
 5.2 - Examples
 --------------
index 77bb959f8f00f9e6e4e3316b22910b72ce581597..88152f1b4c49dbf6fa0bd7d65d66f615884cf9ad 100644 (file)
@@ -1,3 +1,16 @@
+Major changes with snapshot-20011125
+====================================
+
+New parameter smtpd_sender_login_maps that specifies the (SASL)
+login name that owns a MAIL FROM sender address. Specify a regexp
+table in order to require a simple one-to-one mapping.
+
+New sender anti-spoofing restriction reject_sender_login_mismatch
+that refuses a MAIL FROM address when $smtpd_sender_login_maps
+specifies an owner but the client is not (SASL) logged in as the
+MAIL FROM address owner, or when a client is (SASL) logged in but
+does not own the address according to $smtpd_sender_login_maps.
+
 Incompatible changes with snapshot-20011121
 ===========================================
 
index b594886792dbed2323c47321fc4662b34a716f9d..524ca22d1bec5515dac8b3fe082446e049acbfc8 100644 (file)
@@ -4,6 +4,36 @@
 # This file contains example settings of Postfix configuration parameters
 # that control the SMTP server program.
 
+#
+# SENDER ANTI-SPOOFING
+#
+
+# The smtpd_sender_login_maps parameter specifies the (SASL) login
+# name that owns a sender (MAIL FROM) address. 
+# 
+# Specify zero or more maptype:mapname entries. Maps are created with
+# postmap(1) or with equivalent means. The maps are searched in the
+# specified order. Regexp tables are allowed.
+# 
+# Each map entry specifies a sender address and the login name that
+# owns the address. The search order is:
+# 
+# 1)  user@domain owner
+# 
+# This form has the highest precedence.
+# 
+# 2)  user        owner
+# 
+# This matches user@site when site is equal to $myorigin, when site
+# is listed in $mydestination, or when it is listed in $inet_interfaces.
+# 
+# 3)  @domain     owner
+# 
+# This matches every address in the specified domain, and has the
+# lowest precedence.
+# 
+#smtpd_sender_login_maps =
+
 #
 # MISCELLANEOUS
 #
@@ -26,9 +56,9 @@ smtpd_banner = $myhostname ESMTP $mail_name
 # The smtpd_etrn_restrictions parameter restricts what clients are
 # allowed to issue the ETRN command.
 #
-# The Postfix ETRN command is available only for destinations that
-# that are eligible for the Postfix "fast flush" service. See the
-# sample-flush.cf file for details.
+# The Postfix ETRN command accepts only destinations that are eligible
+# for the Postfix "fast flush" service. See the sample-flush.cf file
+# for details.
 #
 # The default is to allow ETRN from any host.  The following restrictions
 # are available:
@@ -226,6 +256,11 @@ smtpd_helo_restrictions =
 #      Permit if result is OK or all numerical.
 #   check_client_access maptype:mapname: see smtpd_client_restrictions.
 #   check_helo_access maptype:mapname: see smtpd_helo_restrictions.
+#   reject_sender_login_mismatch: reject if $smtpd_sender_login_maps specifies
+#      a MAIL FROM address owner, but the client is not (SASL) logged in as
+#      that MAIL FROM address owner; or if the client is (SASL) logged in, but
+#      the client login name doesn't own the MAIL FROM address according to
+#      $smtpd_sender_login_maps (see above).
 #   reject_non_fqdn_hostname: reject HELO hostname that is not in FQDN form
 #   reject_non_fqdn_sender: reject sender address that is not in FQDN form
 #   reject: reject the request. Place this at the end of a restriction.
@@ -296,6 +331,11 @@ smtpd_sender_restrictions =
 #   check_client_access maptype:mapname: see smtpd_client_restrictions.
 #   check_helo_access maptype:mapname: see smtpd_helo_restrictions.
 #   check_sender_access maptype:mapname: see smtpd_sender_restrictions.
+#   reject_sender_login_mismatch: reject if $smtpd_sender_login_maps specifies
+#      a MAIL FROM address owner, but the client is not (SASL) logged in as
+#      that MAIL FROM address owner; or if the client is (SASL) logged in, but
+#      the client login name doesn't own the MAIL FROM address according to
+#      $smtpd_sender_login_maps (see above).
 #   reject_non_fqdn_hostname: reject HELO hostname that is not in FQDN form
 #   reject_non_fqdn_sender: reject sender address that is not in FQDN form
 #   reject_non_fqdn_recipient: reject recipient address that is not in FQDN form
index 66affb009b222bb73a40db83367df2aec29fb6bd..fe7499449e77d9165c212e96c85e0b8f5368262f 100644 (file)
@@ -1138,7 +1138,7 @@ run out of file handles; after that, it will run out of sockets.
 
 To set the following kernel parameters at boot time, add the
 following lines to the <b>/boot/loader.conf</b> file (this is
-specific to FreeBSD 4.x):
+verified with FreeBSD 4.4):
 
 <p>
 
@@ -1146,18 +1146,17 @@ specific to FreeBSD 4.x):
 <pre>
 kern.ipc.maxsockets="5000"
 kern.ipc.nmbclusters="65536"
+kern.maxproc="2048"
+kern.maxfiles="16384"
+kern.maxfilesperproc="16384"
 </pre>
 </blockquote>
 
 <p>
 
-These parameters cannot be set at run time (verified with FreeBSD
-4.2).
-
-<p>
-
-To set the following kernel parameters at run time execute the
-following commands as root (this is specific to FreeBSD 4.x):
+With FreeBSD 4.2, the last three parameters cannot be set from
+<b>/boot/loader.conf</b>. To set the open file limits, execute the
+following commands as root:
 
 <p>
 
@@ -1170,14 +1169,9 @@ following commands as root (this is specific to FreeBSD 4.x):
 
 <p>
 
-These parameters cannot be set from <b>/boot/loader.conf</b>
-(verified with FreeBSD 4.2).
-
-<p>
-
-Other kernel parameters such as <b>kern.maxproc</b> can be increased
-only by recompiling the kernel with a different <b>maxusers</b>
-setting in the kernel configuration file (verified with FreeBSD 4.2).
+With FreeBSD 4.2, <b>kern.maxproc</b> can be set only by recompiling
+the kernel with a different <b>maxusers</b> setting in the kernel
+configuration file.
 
 <hr>
 
index 282a7bd3eb3ff8d01d34c13acb84a6fb246ffa7b..8918f9858be4056bb5d782a731a941c41c039a3b 100644 (file)
@@ -181,31 +181,32 @@ SENDMAIL(1)                                           SENDMAIL(1)
 
        <b>-qR</b><i>site</i>
               Schedule  immediate  delivery  of  all mail that is
-              queued for the named <i>site</i>. This uses  "fast  flush"
-              service,  and  is  implemented by connecting to the
-              local SMTP server at <b>$myhostname</b>.  See <a href="smtpd.8.html"><b>smtpd</b>(8)</a> for
+              queued for the named <i>site</i>. This option accepts only
+              <i>site</i>  names  that are eligible for the "fast flush"
+              service, and is implemented by  connecting  to  the
+              local SMTP server at <b>$myhostname</b>.  See <a href="flushd.8.html"><b>flush</b>(8)</a> for
               more information about the "fast flush" service.
 
        <b>-qS</b><i>site</i>
-              This  command  is  not  implemented. Use the slower
+              This command is not  implemented.  Use  the  slower
               <b>sendmail</b> <b>-q</b> command instead.
 
-       <b>-t</b>     Extract  recipients  from  message  headers.   This
-              requires  that  no  recipients  be specified on the
+       <b>-t</b>     Extract   recipients  from  message  headers.  This
+              requires that no recipients  be  specified  on  the
               command line.
 
        <b>-v</b>     Enable verbose logging for debugging purposes. Mul-
-              tiple  <b>-v</b>  options  make  the software increasingly
+              tiple <b>-v</b> options  make  the  software  increasingly
               verbose.
 
 <b>SECURITY</b>
-       By design, this program is not  set-user  (or  group)  id.
-       However,  it  must  handle  data  from  untrusted users or
-       untrusted machines.  Thus, the usual precautions  need  to
+       By  design,  this  program  is not set-user (or group) id.
+       However, it must  handle  data  from  untrusted  users  or
+       untrusted  machines.   Thus, the usual precautions need to
        be taken against malicious inputs.
 
 <b>DIAGNOSTICS</b>
-       Problems  are  logged  to  <b>syslogd</b>(8)  and to the standard
+       Problems are logged to  <b>syslogd</b>(8)  and  to  the  standard
        error stream.
 
 <b>ENVIRONMENT</b>
@@ -217,7 +218,7 @@ SENDMAIL(1)                                           SENDMAIL(1)
 
        <b>MAIL</b><i>_</i><b>DEBUG</b>
               Enable debugging with an external command, as spec-
-              ified   with   the  <b>debugger</b><i>_</i><b>command</b>  configuration
+              ified  with  the   <b>debugger</b><i>_</i><b>command</b>   configuration
               parameter.
 
 <b>FILES</b>
@@ -225,13 +226,13 @@ SENDMAIL(1)                                           SENDMAIL(1)
        /etc/postfix, configuration files
 
 <b>CONFIGURATION</b> <b>PARAMETERS</b>
-       See the Postfix <b>main.cf</b> file for syntax  details  and  for
-       default  values.  Use  the  <b>postfix</b> <b>reload</b> command after a
+       See  the  Postfix  <b>main.cf</b> file for syntax details and for
+       default values. Use the <b>postfix</b>  <b>reload</b>  command  after  a
        configuration change.
 
        <b>alias</b><i>_</i><b>database</b>
-              Default  alias  database(s)  for  <b>newaliases</b>.   The
-              default  value  for  this  parameter is system-spe-
+              Default   alias  database(s)  for  <b>newaliases</b>.  The
+              default value for  this  parameter  is  system-spe-
               cific.
 
        <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b>
@@ -247,64 +248,64 @@ SENDMAIL(1)                                           SENDMAIL(1)
               initialized.
 
        <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b>
-              Increment  in  verbose  logging level when a remote
+              Increment in verbose logging level  when  a  remote
               host  matches  a  pattern  in  the  <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
               parameter.
 
        <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
-              List  of  domain or network patterns. When a remote
-              host matches a pattern, increase the  verbose  log-
-              ging   level   by   the  amount  specified  in  the
+              List of domain or network patterns. When  a  remote
+              host  matches  a pattern, increase the verbose log-
+              ging  level  by  the  amount   specified   in   the
               <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> parameter.
 
        <b>default</b><i>_</i><b>verp</b><i>_</i><b>delimiters</b>
-              The VERP delimiter characters that  are  used  when
-              the  <b>-V</b>  command  line  option is specified without
+              The  VERP  delimiter  characters that are used when
+              the <b>-V</b> command line  option  is  specified  without
               delimiter characters.
 
        <b>fast</b><i>_</i><b>flush</b><i>_</i><b>domains</b>
               List of domains that will receive "fast flush" ser-
-              vice  (default:  all  domains  that  this system is
-              willing to relay mail to).  This  greatly  improves
-              the  performance  of  the SMTP <b>ETRN</b> request, and of
-              the <b>sendmail</b> <b>-qR</b> command. For domains  not  in  the
+              vice (default: all  domains  that  this  system  is
+              willing  to  relay  mail to). This greatly improves
+              the performance of the SMTP <b>ETRN</b>  request,  and  of
+              the  <b>sendmail</b>  <b>-qR</b>  command. For domains not in the
               list, Postfix simply attempts to deliver all queued
               mail.
 
        <b>fork</b><i>_</i><b>attempts</b>
-              Number of attempts to <b>fork</b>() a process before  giv-
+              Number  of attempts to <b>fork</b>() a process before giv-
               ing up.
 
        <b>fork</b><i>_</i><b>delay</b>
-              Delay   in   seconds   between   successive  <b>fork</b>()
+              Delay  in   seconds   between   successive   <b>fork</b>()
               attempts.
 
        <b>hopcount</b><i>_</i><b>limit</b>
               Limit the number of <b>Received:</b> message headers.
 
        <b>mail</b><i>_</i><b>owner</b>
-              The owner of the mail queue  and  of  most  Postfix
+              The  owner  of  the  mail queue and of most Postfix
               processes.
 
        <b>command</b><i>_</i><b>directory</b>
-              Directory  with  Postfix support commands (default:
+              Directory with Postfix support  commands  (default:
               <b>$program</b><i>_</i><b>directory</b>).
 
        <b>daemon</b><i>_</i><b>directory</b>
-              Directory with Postfix  daemon  programs  (default:
+              Directory  with  Postfix  daemon programs (default:
               <b>$program</b><i>_</i><b>directory</b>).
 
        <b>queue</b><i>_</i><b>directory</b>
-              Top-level  directory  of the Postfix queue. This is
+              Top-level directory of the Postfix queue.  This  is
               also the root directory of Postfix daemons that run
               chrooted.
 
        <b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b>
-              The  time  between successive scans of the deferred
+              The time between successive scans of  the  deferred
               queue.
 
        <b>verp</b><i>_</i><b>delimiter</b><i>_</i><b>filter</b>
-              The characters that Postfix accepts as VERP  delim-
+              The  characters that Postfix accepts as VERP delim-
               iter characters.
 
 <b>SEE</b> <b>ALSO</b>
@@ -320,7 +321,7 @@ SENDMAIL(1)                                           SENDMAIL(1)
        syslogd(8) system logging
 
 <b>LICENSE</b>
-       The  Secure  Mailer  license must be distributed with this
+       The Secure Mailer license must be  distributed  with  this
        software.
 
 <b>AUTHOR(S)</b>
index 5864c13cb54fe75d3bf8bc6322b396ba8eac856f..eb8779b9aba196b91b1e56a524c6dca526121d24 100644 (file)
@@ -103,9 +103,15 @@ SMTPD(8)                                                 SMTPD(8)
               <b>noanonymous</b>
                      Disallow anonymous logins.
 
+       <b>smtpd</b><i>_</i><b>sender</b><i>_</i><b>login</b><i>_</i><b>maps</b>
+              Maps  that  specify the SASL login name that owns a
+              MAIL   FROM   sender   address.   Used    by    the
+              <b>reject</b><i>_</i><b>sender</b><i>_</i><b>login</b><i>_</i><b>mismatch</b>  sender  anti-spoofing
+              restriction.
+
 <b>Miscellaneous</b>
        <b>always</b><i>_</i><b>bcc</b>
-              Address  to send a copy of each message that enters
+              Address to send a copy of each message that  enters
               the system.
 
        <b>command</b><i>_</i><b>directory</b>
@@ -113,71 +119,71 @@ SMTPD(8)                                                 SMTPD(8)
               <b>$program</b><i>_</i><b>directory</b>).
 
        <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b>
-              Increment  in  verbose  logging level when a remote
+              Increment in verbose logging level  when  a  remote
               host  matches  a  pattern  in  the  <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
               parameter.
 
        <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
-              List  of  domain or network patterns. When a remote
-              host matches a pattern, increase the  verbose  log-
-              ging   level   by   the  amount  specified  in  the
+              List of domain or network patterns. When  a  remote
+              host  matches  a pattern, increase the verbose log-
+              ging  level  by  the  amount   specified   in   the
               <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> parameter.
 
        <b>default</b><i>_</i><b>verp</b><i>_</i><b>delimiters</b>
               The default VERP delimiter characters that are used
-              when   the   XVERP  command  is  specified  without
+              when  the  XVERP  command  is   specified   without
               explicit delimiters.
 
        <b>error</b><i>_</i><b>notice</b><i>_</i><b>recipient</b>
-              Recipient   of    protocol/policy/resource/software
+              Recipient    of   protocol/policy/resource/software
               error notices.
 
        <b>hopcount</b><i>_</i><b>limit</b>
               Limit the number of <b>Received:</b> message headers.
 
        <b>local</b><i>_</i><b>recipient</b><i>_</i><b>maps</b>
-              List  of  maps  with  user  names that are local to
+              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
+              defined, then the  SMTP  server  rejects  mail  for
               unknown local users.
 
        <b>notify</b><i>_</i><b>classes</b>
               List of error classes. Of special interest are:
 
-              <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
                      postmaster.
 
               <b>protocol</b>
-                     When a client violates the SMTP protocol  or
+                     When  a client violates the SMTP protocol or
                      issues  an  unimplemented  command,  mail  a
                      transcript of the entire SMTP session to the
                      postmaster.
 
        <b>smtpd</b><i>_</i><b>banner</b>
-              Text  that  follows the <b>220</b> status code in the SMTP
+              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
+              Restrict  the  number  of  recipients that the SMTP
               server accepts per message delivery.
 
        <b>smtpd</b><i>_</i><b>timeout</b>
-              Limit  the  time  to  send a server response and to
+              Limit the time to send a  server  response  and  to
               receive a client request.
 
        <b>soft</b><i>_</i><b>bounce</b>
-              Change hard (5xx) reject responses into soft  (4xx)
-              reject  responses.   This can be useful for testing
+              Change  hard (5xx) reject responses into soft (4xx)
+              reject responses.  This can be useful  for  testing
               purposes.
 
        <b>verp</b><i>_</i><b>delimiter</b><i>_</i><b>filter</b>
-              The characters that Postfix accepts as VERP  delim-
+              The  characters that Postfix accepts as VERP delim-
               iter characters.
 
 <b>Resource</b> <b>controls</b>
        <b>line</b><i>_</i><b>length</b><i>_</i><b>limit</b>
-              Limit  the  amount  of memory in bytes used for the
+              Limit the amount of memory in bytes  used  for  the
               handling of partial input lines.
 
        <b>message</b><i>_</i><b>size</b><i>_</i><b>limit</b>
@@ -185,8 +191,8 @@ SMTPD(8)                                                 SMTPD(8)
               ing on-disk storage for envelope information.
 
        <b>queue</b><i>_</i><b>minfree</b>
-              Minimal  amount of free space in bytes in the queue
-              file system for the SMTP server to accept any  mail
+              Minimal amount of free space in bytes in the  queue
+              file  system for the SMTP server to accept any mail
               at all.
 
 <b>Tarpitting</b>
@@ -196,22 +202,22 @@ SMTPD(8)                                                 SMTPD(8)
 
        <b>smtpd</b><i>_</i><b>soft</b><i>_</i><b>error</b><i>_</i><b>limit</b>
               When an SMTP client has made this number of errors,
-              wait  <i>error_count</i>  seconds before responding to any
+              wait <i>error_count</i> seconds before responding  to  any
               client request.
 
        <b>smtpd</b><i>_</i><b>hard</b><i>_</i><b>error</b><i>_</i><b>limit</b>
-              Disconnect after a client has made this  number  of
+              Disconnect  after  a client has made this number of
               errors.
 
        <b>smtpd</b><i>_</i><b>junk</b><i>_</i><b>command</b><i>_</i><b>limit</b>
               Limit the number of times a client can issue a junk
-              command such as NOOP, VRFY, ETRN  or  RSET  in  one
-              SMTP  session  before  it  is penalized with tarpit
+              command  such  as  NOOP,  VRFY, ETRN or RSET in one
+              SMTP session before it  is  penalized  with  tarpit
               delays.
 
 <b>UCE</b> <b>control</b> <b>restrictions</b>
        <b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdomains</b> (versions &gt;= 20011119)
-              List of Postfix features that use <i>domain.name</i>  pat-
+              List  of Postfix features that use <i>domain.name</i> pat-
               terns  to  match  <i>sub.domain.name</i>  (as  opposed  to
               requiring <i>.domain.name</i> patterns).
 
@@ -220,19 +226,19 @@ SMTPD(8)                                                 SMTPD(8)
               tem.
 
        <b>smtpd</b><i>_</i><b>helo</b><i>_</i><b>required</b>
-              Require  that  clients  introduce themselves at the
+              Require that clients introduce  themselves  at  the
               beginning of an SMTP session.
 
        <b>smtpd</b><i>_</i><b>helo</b><i>_</i><b>restrictions</b>
-              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.
 
        <b>smtpd</b><i>_</i><b>sender</b><i>_</i><b>restrictions</b>
-              Restrict  what sender addresses are allowed in <b>MAIL</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
+              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>
@@ -240,62 +246,62 @@ SMTPD(8)                                                 SMTPD(8)
               mands, and what clients may issue <b>ETRN</b> commands.
 
        <b>allow</b><i>_</i><b>untrusted</b><i>_</i><b>routing</b>
-              Allow untrusted clients to specify  addresses  with
-              sender-specified  routing.   Enabling this opens up
-              nasty relay loopholes involving trusted  backup  MX
+              Allow  untrusted  clients to specify addresses with
+              sender-specified routing.  Enabling this  opens  up
+              nasty  relay  loopholes involving trusted backup MX
               hosts.
 
        <b>smtpd</b><i>_</i><b>restriction</b><i>_</i><b>classes</b>
-              Declares  the  name of zero or more parameters that
-              contain a list of UCE restrictions.  The  names  of
-              these  parameters  can  then be used instead of the
+              Declares the name of zero or more  parameters  that
+              contain  a  list  of UCE restrictions. The names of
+              these parameters can then be used  instead  of  the
               restriction lists that they represent.
 
        <b>maps</b><i>_</i><b>rbl</b><i>_</i><b>domains</b>
-              List of DNS domains that publish the  addresses  of
+              List  of  DNS domains that publish the addresses of
               blacklisted hosts.
 
        <b>permit</b><i>_</i><b>mx</b><i>_</i><b>backup</b><i>_</i><b>networks</b>
-              Only  domains  whose  primary  MX  hosts  match the
-              listed  networks  are   eligible   for   the   <b>per-</b>
+              Only domains  whose  primary  MX  hosts  match  the
+              listed   networks   are   eligible   for  the  <b>per-</b>
               <b>mit</b><i>_</i><b>mx</b><i>_</i><b>backup</b> feature.
 
        <b>relay</b><i>_</i><b>domains</b>
-              Restrict  what domains or networks this mail system
+              Restrict what domains or networks this mail  system
               will relay mail from or to.
 
 <b>UCE</b> <b>control</b> <b>responses</b>
        <b>access</b><i>_</i><b>map</b><i>_</i><b>reject</b><i>_</i><b>code</b>
-              Server response when a client  violates  an  access
+              Server  response  when  a client violates an access
               database restriction.
 
        <b>invalid</b><i>_</i><b>hostname</b><i>_</i><b>reject</b><i>_</i><b>code</b>
-              Server   response   when   a  client  violates  the
+              Server  response  when  a   client   violates   the
               <b>reject</b><i>_</i><b>invalid</b><i>_</i><b>hostname</b> restriction.
 
        <b>maps</b><i>_</i><b>rbl</b><i>_</i><b>reject</b><i>_</i><b>code</b>
-              Server  response  when  a   client   violates   the
+              Server   response   when   a  client  violates  the
               <b>maps</b><i>_</i><b>rbl</b><i>_</i><b>domains</b> restriction.
 
        <b>reject</b><i>_</i><b>code</b>
-              Response  code  when  the  client  matches a <b>reject</b>
+              Response code when  the  client  matches  a  <b>reject</b>
               restriction.
 
        <b>relay</b><i>_</i><b>domains</b><i>_</i><b>reject</b><i>_</i><b>code</b>
-              Server response when a client attempts  to  violate
+              Server  response  when a client attempts to violate
               the mail relay policy.
 
        <b>unknown</b><i>_</i><b>address</b><i>_</i><b>reject</b><i>_</i><b>code</b>
-              Server   response   when   a  client  violates  the
+              Server  response  when  a   client   violates   the
               <b>reject</b><i>_</i><b>unknown</b><i>_</i><b>address</b> restriction.
 
        <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
-              name  mapping  violates  the <b>reject</b><i>_</i><b>unknown</b><i>_</i><b>clients</b>
+              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>
               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
+              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>
@@ -304,7 +310,7 @@ SMTPD(8)                                                 SMTPD(8)
        syslogd(8) system logging
 
 <b>LICENSE</b>
-       The  Secure  Mailer  license must be distributed with this
+       The Secure Mailer license must be  distributed  with  this
        software.
 
 <b>AUTHOR(S)</b>
index 4b4eb37b4c16343b5b902f77a700f925904f60fe..72fea6be0be7c7d026ff742fcd53b555b19f17d7 100644 (file)
@@ -544,6 +544,18 @@ response code to rejected requests (default:  <b>504</b>).
 
 <p>
 
+<a name="reject_sender_login_mismatch">
+
+<dt> <b>reject_sender_login_mismatch</b> <dd> Reject the request
+when <a href="#smtpd_sender_login_maps"> $smtpd_sender_owner_maps</a>
+specifies an owner for the MAIL FROM address, but the client is
+not (SASL) logged in as that MAIL FROM address owner; or when the
+client is (SASL) logged in, but the client login name doesn't own
+the MAIL FROM address according to <a href="#smtpd_sender_login_maps">
+$smtpd_sender_login_maps</a>.
+
+<p>
+
 <dt> <b><a href="#permit_naked_ip_address">permit_naked_ip_address</a></b>
 
 <dt> <b><a href="#reject_invalid_hostname">reject_invalid_hostname</a></b>
@@ -811,6 +823,9 @@ response code to rejected requests (default:  <b>504</b>).
 
 <dt> <b><a href="#check_sender_access">check_sender_access</a></b> <i>maptype</i>:<i>mapname</i>
 
+<dt> <b><a href="#reject_sender_login_mismatch">reject_sender_login_mismatch
+</a></b>
+
 <dd> See sender address restrictions.
 
 <p>
@@ -1158,6 +1173,68 @@ tables listed in <b>$relay_domains.</b>
 
 </dl>
 
+<dl>
+
+<a name="smtpd_sender_login_maps">
+
+<dt> <b>smtpd_sender_login_maps</b>
+
+<dd>This parameter specifies ownership of MAIL FROM addresses, as
+used by the <a href="#reject_sender_login_mismatch">
+reject_sender_login_mismatch</a> sender address restriction.
+
+<p>
+
+<dl>
+
+<dt>Default:
+
+<dd><b>smtpd_sender_login_maps = </b>
+
+<p>
+
+<dt>Syntax:
+
+<dd> Specify zero or more type:name lookup tables, separated by
+whitespace and/or commas.  The maps are searched in the
+specified order. Regexp tables are allowed.
+
+<p>
+
+Each map entry specifies a sender address and the login name that
+owns the address. The search order is:
+
+<p>
+
+<dl>
+
+<dt><i>user@domain owner</i>
+
+<dd>This form has the highest precedence.
+
+<p>
+
+<dt><i>user        owner</i>
+
+<dd>This matches <i>user@site</i> when <i>site</i> is equal to <a
+href="basic.html#myorigin"> $myorigin</a>, when <i>site</i> is
+listed in <a href="basic.html#mydestination"> $mydestination</a>,
+or when it is listed in <a href="basic.html#inet_interfaces">
+$inet_interfaces</a>.
+
+<p>
+
+<dt><i>@domain     owner</i>
+
+<dd>This matches every address in the specified domain, and has
+the lowest precedence.
+
+</dl>
+
+</dl>
+
+</dl>
+
 <hr>
 
 <a href="index.html">Up one level</a> | <a href="basic.html">Basic
index 2c9a7f27eced8019eb4f8fe772a07b066a516e52..c0c258ca701e8669f499a0b98a74aeb227f51e25 100644 (file)
@@ -144,6 +144,12 @@ case "$SYSTEM.$RELEASE" in
                done
                ;;
        AIX.*)  case "`uname -v`" in
+               5)      SYSTYPE=AIX4
+                       case "$CC" in
+                       cc|*/cc|xlc|*/xlc) CCARGS="$CCARGS -w -blibpath:/usr/lib:/lib:/usr/local/lib";;
+                       esac
+                       CCARGS="$CCARGS -D_ALL_SOURCE -DHAS_POSIX_REGEXP"
+                       ;;
                4)      SYSTYPE=AIX4
                        # How embarrassing...
                        case "$CC" in
index 7db99fb6dff66cddb337e5684f379979da306969..16b6d43c7aad90ad6cba698325a87847701e7211 100644 (file)
@@ -154,9 +154,10 @@ The interval between queue runs. Use the \fBqueue_run_delay\fR
 configuration parameter instead.
 .IP \fB-qR\fIsite\fR
 Schedule immediate delivery of all mail that is queued for the named
-\fIsite\fR. This uses "fast flush" service, and is implemented
-by connecting to the local SMTP server at \fB$myhostname\fR.
-See \fBsmtpd\fR(8) for more information about the "fast flush"
+\fIsite\fR. This option accepts only \fIsite\fR names that are
+eligible for the "fast flush" service, and is implemented by
+connecting to the local SMTP server at \fB$myhostname\fR.
+See \fBflush\fR(8) for more information about the "fast flush"
 service.
 .IP \fB-qS\fIsite\fR
 This command is not implemented. Use the slower \fBsendmail -q\fR
index edad7fd82fbf45ba3717d9cdf7d9f4f2ed265461..74c72b1865177a6a7df5fe30ced274de1d90577c 100644 (file)
@@ -103,6 +103,10 @@ dictionary attack.
 .IP \fBnoanonymous\fR
 Disallow anonymous logins.
 .RE
+.IP \fBsmtpd_sender_login_maps\fR
+Maps that specify the SASL login name that owns a MAIL FROM sender
+address. Used by the \fBreject_sender_login_mismatch\fR sender
+anti-spoofing restriction.
 .SH Miscellaneous
 .ad
 .fi
index c65cee5eeaa3c4102fabbf9856ecc6249e3ce2e9..2091f0ab349e813b7ed4881e42636db5b175ee21 100644 (file)
@@ -781,6 +781,12 @@ extern char *var_smtpd_sasl_opts;
 #define DEF_SMTPD_SASL_REALM   "$myhostname"
 extern char *var_smtpd_sasl_realm;
 
+#define VAR_SMTPD_SND_AUTH_MAPS        "smtpd_sender_login_maps"
+#define DEF_SMTPD_SND_AUTH_MAPS        ""
+extern char *var_smtpd_snd_auth_maps;
+
+#define REJECT_SENDER_LOGIN_MISMATCH   "reject_sender_login_mismatch"
+
  /*
   * SASL authentication support, SMTP client side.
   */
index 8d16673aac65eaaeafcaa245dc96aea9c3200202..924dd1e8639be5ca33a054b55dea7e645a0c890d 100644 (file)
@@ -15,7 +15,7 @@
   * Version of this program.
   */
 #define VAR_MAIL_VERSION       "mail_version"
-#define DEF_MAIL_VERSION       "Snapshot-20011121"
+#define DEF_MAIL_VERSION       "Snapshot-20011125"
 extern char *var_mail_version;
 
 /* LICENSE
index b23589070d1747a0b6bcfd5514cd4877f6b824b7..86de7ec27a54ac28822a59402211efbb6713fbc6 100644 (file)
 /*     configuration parameter instead.
 /* .IP \fB-qR\fIsite\fR
 /*     Schedule immediate delivery of all mail that is queued for the named
-/*     \fIsite\fR. This uses "fast flush" service, and is implemented
-/*     by connecting to the local SMTP server at \fB$myhostname\fR.
-/*     See \fBsmtpd\fR(8) for more information about the "fast flush"
+/*     \fIsite\fR. This option accepts only \fIsite\fR names that are 
+/*     eligible for the "fast flush" service, and is implemented by
+/*     connecting to the local SMTP server at \fB$myhostname\fR.
+/*     See \fBflush\fR(8) for more information about the "fast flush"
 /*     service.
 /* .IP \fB-qS\fIsite\fR
 /*     This command is not implemented. Use the slower \fBsendmail -q\fR
index 745c9e908a6b94bfc292188b7f6ca66abc9006b7..9a775ae2b5cd366c2f4f2430dfdb2b0d3d46ce75 100644 (file)
 /* .IP \fBnoanonymous\fR
 /*     Disallow anonymous logins.
 /* .RE
+/* .IP \fBsmtpd_sender_login_maps\fR
+/*     Maps that specify the SASL login name that owns a MAIL FROM sender
+/*     address. Used by the \fBreject_sender_login_mismatch\fR sender
+/*     anti-spoofing restriction.
 /* .SH Miscellaneous
 /* .ad
 /* .fi
@@ -364,6 +368,7 @@ char   *var_smtpd_sasl_realm;
 char   *var_filter_xport;
 bool    var_broken_auth_clients;
 char   *var_perm_mx_networks;
+char   *var_smtpd_snd_auth_maps;
 
  /*
   * Global state, for stand-alone mode queue file cleanup. When this is
@@ -1288,6 +1293,7 @@ static void chat_reset(SMTPD_STATE *state)
     if (state->history != 0 && SMTPD_STAND_ALONE(state) == 0
        && (state->error_mask & state->notify_mask))
        smtpd_chat_notify(state);
+    state->error_mask = 0;
     smtpd_chat_reset(state);
 }
 
@@ -1621,6 +1627,7 @@ int     main(int argc, char **argv)
        VAR_SMTPD_SASL_REALM, DEF_SMTPD_SASL_REALM, &var_smtpd_sasl_realm, 1, 0,
        VAR_FILTER_XPORT, DEF_FILTER_XPORT, &var_filter_xport, 0, 0,
        VAR_PERM_MX_NETWORKS, DEF_PERM_MX_NETWORKS, &var_perm_mx_networks, 0, 0,
+       VAR_SMTPD_SND_AUTH_MAPS, DEF_SMTPD_SND_AUTH_MAPS, &var_smtpd_snd_auth_maps, 0, 0,
        0,
     };
 
index 6bd64170662cbe0612bba2a17e1d91108ba981b8..0a1385c15d86e99ffc080040375f808a2c893cc2 100644 (file)
@@ -333,6 +333,11 @@ static MAPS *virtual_maps;
 static MAPS *virt_mailbox_maps;
 static MAPS *relocated_maps;
 
+ /*
+  * Pre-opened sender to login name mapping.
+  */
+static MAPS *smtpd_sender_login_maps;
+
  /*
   * Pre-opened access control lists.
   */
@@ -543,6 +548,13 @@ void    smtpd_check_init(void)
 
     access_parent_style = match_parent_style(SMTPD_ACCESS_MAPS);
 
+    /*
+     * Sender to login name mapping.
+     */
+    smtpd_sender_login_maps = maps_create(VAR_SMTPD_SND_AUTH_MAPS,
+                                              var_smtpd_snd_auth_maps,
+                                              DICT_FLAG_LOCK);
+
     /*
      * error_text is used for returning error responses.
      */
@@ -1822,6 +1834,40 @@ static int reject_maps_rbl(SMTPD_STATE *state)
     return (result);
 }
 
+/* reject_sender_login_mismatch - reject login/sender ownership mismatch */
+
+static int reject_sender_login_mismatch(SMTPD_STATE *state, const char *sender)
+{
+    const RESOLVE_REPLY *reply;
+    const char *login = 0;
+    const char *owner = 0;
+
+    /*
+     * If the sender address is owned by a login name, or if the client has
+     * logged in, then require that the client is logged in as the owner of
+     * the sender address.
+     */
+    reply = (const RESOLVE_REPLY *) ctable_locate(smtpd_resolve_cache, sender);
+    owner = check_maps_find(state, sender, smtpd_sender_login_maps,
+                           STR(reply->recipient), 0);
+#ifdef USE_SASL_AUTH
+    if (var_smtpd_sasl_enable && state->sasl_username != 0)
+       login = state->sasl_username;
+#endif
+    if (login) {
+       if (owner == 0 || strcasecmp(login, owner) != 0)
+           return (smtpd_check_reject(state, MAIL_ERROR_POLICY,
+             "553 <%s>: Sender address rejected: not owned by username %s",
+                                      sender, login));
+    } else {
+       if (owner)
+           return (smtpd_check_reject(state, MAIL_ERROR_POLICY,
+               "553 <%s>: Sender address rejected: not logged in as owner",
+                                      sender));
+    }
+    return (SMTPD_CHECK_DUNNO);
+}
+
 /* is_map_command - restriction has form: check_xxx_access type:name */
 
 static int is_map_command(SMTPD_STATE *state, const char *name,
@@ -1985,6 +2031,9 @@ static int generic_checks(SMTPD_STATE *state, ARGV *restrictions,
            if (state->sender && *state->sender)
                status = reject_non_fqdn_address(state, state->sender,
                                          state->sender, SMTPD_NAME_SENDER);
+       } else if (strcasecmp(name, REJECT_SENDER_LOGIN_MISMATCH) == 0) {
+           if (state->sender && *state->sender)
+               status = reject_sender_login_mismatch(state, state->sender);
        }
 
        /*
index 13b07c6f1fef57f1169bdd1184ad4618bffd556d..35dad70ab7e2ef2d924c9b2388e0f878eac90d08 100644 (file)
@@ -304,6 +304,34 @@ extern int opterr;
   * AIX: a SYSV-flavored hybrid. NB: fcntl() and flock() access the same
   * underlying locking primitives.
   */
+#ifdef AIX5
+#define SUPPORTED
+#include <sys/types.h>
+#define MISSING_SETENV
+#define _PATH_BSHELL   "/bin/sh"
+#define _PATH_MAILDIR   "/var/spool/mail"      /* paths.h lies */
+#define _PATH_DEFPATH  "/usr/bin:/usr/ucb"
+#define _PATH_STDPATH  "/usr/bin:/usr/sbin:/usr/ucb"
+#define HAS_FCNTL_LOCK
+#define INTERNAL_LOCK  MYFLOCK_STYLE_FCNTL
+#define DEF_MAILBOX_LOCK "fcntl, dotlock"
+#define USE_SYS_SELECT_H
+#define HAS_FSYNC
+#define HAS_DBM
+#define DEF_DB_TYPE    "dbm"
+#define ALIAS_DB_MAP   "dbm:/etc/aliases"
+#define HAS_NIS
+#define HAS_SA_LEN
+#define GETTIMEOFDAY(t)        gettimeofday(t,(struct timezone *) 0)
+#define RESOLVE_H_NEEDS_STDIO_H
+#define ROOT_PATH      "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
+#define SOCKADDR_SIZE  size_t
+#define SOCKOPT_SIZE   size_t
+#define USE_STATVFS
+#define STATVFS_IN_SYS_STATVFS_H
+#define STRCASECMP_IN_STRINGS_H
+#endif
+
 #ifdef AIX4
 #define SUPPORTED
 #include <sys/types.h>