submit(8)


NAME

   submit - Submit a new message to the Courier mail server

SYNOPSIS

   /usr/bin/submit [-expn=address] [-vrfy=address] [-vhost=address] [-bcc]
                   [-delay=n] {module} {"type; hostid"}

DESCRIPTION

   The submit program submits messages to the Courier mail server for
   processing. The submit program is not intended to be invoked by the end
   user. It is used by the Courier mail server input modules only. The
   submit program's global read and execute permissions are turned off, so
   that it can only be executed by a process that's a member of the
   courier group.  submit is installed in the /usr/lib/courier/courier
   directory.

   submit always takes two command line arguments after any options:

   module
       This argument identifies the module that's running the submit
       command. It must be one of the module names that the Courier mail
       server knows about, such as local, or esmtp. This argument
       determines address rewriting rules.

   "type; hostid"
       This single argument identifies the source of the message, and must
       be suitable for the Remote-MTA: header in delivery status
       notifications, as specified by RFC 1894. For messages that are
       received via ESMTP, this argument is typically "dns; helohost
       (hostname [ip.address])".

   The submit program takes the following options:

   -expn=address
       Do not accept a message, instead "expand" the given address. If the
       specified address matches a locally-defined alias, submit prints
       the addresses this address expands to. If the specified address
       does not match a locally-defined alias, the address is displayed by
       itself.

   -vrfy=address
       Do not accept a message, instead verify the given address.  submit
       prints a suitable message and sets the exit code to indicate
       whether the specified address is valid, or not. If the address
       matches a local alias, submit will indicate a valid address, and
       exit. If the address does not match a local alias, submit checks if
       this address is deliverable by any output protocol module. If so,
       submit will indicate a valid address, and exit. Otherwise, submit
       prints a "User unknown" error message, and exits.

   -bcc
       If no recipients are given, obtain the list of recipients from Bcc:
       headers only. Normally, if no recipients are specified, submit
       reads the list of recipients from the To:, Cc: and Bcc: headers
       (Bcc: headers are always removed). The -bcc option ignores To: and
       Cc: headers for this purpose. This option is ignored if an explicit
       recipient list is specified (see below).

   -delay=n
       Wait n seconds before delivering the message. If not specified,
       delivery begins after waiting the amount of time specified by the
       /etc/courier/submitdelay configuration time (default: 0 seconds --
       immediate delivery).

   -vhost=address
       Append ".address" to names of all configuration files Courier reads
       while processing this message.

RESPONSES FROM SUBMIT

   All replies from submit follow the format of SMTP responses, as defined
   in RFC822.

   To summarize: the responses are one or more lines long. Every line in
   the response instead of the last one consists of a three-digit
   numerical code, a dash, then arbitrary text. The last line (or the only
   line of the response) starts with a three-digit numerical code, a
   single space, and arbitrary text. The first digit of the numerical code
   indicates whether the response indicates success, or failure. If the
   first digit is 5, the response indicates a permanent failure. If the
   first digit is 4, the response indicates a temporary failure (the
   message or the address should be resubmitted later). If the first digit
   is not 4 or 5, the response indicates success, or acceptance.

MESSAGE SUBMISSION

   Unless either -expn or -vrfy option is specified, submit reads the
   message envelope and contents from standard input, as follows. All
   input and output to submit consists of newline-terminated (NOT carriage
   return/newline terminated) lines of text.

   submit reads the first line of text, which specifies the envelope
   sender address. The line is formatted as follows:

       address<tab>format<tab>envid

   <tab> is the ASCII tab character. The address may be an empty string,
   optionally followed by tab, then "format", another tab, then "envid".

   format is one or more chatacters that specify delivery status
   notification processing, and other message options. The 'F' character
   specifies that delivery status notifications should include the entire
   message, 'H' specifies just the headers of the message should be
   included. Absence of either 'F' or 'H' specifies no preference.
   "S{keyword}" specifies the optional SECURITY extension keyword for this
   message. The 'V' character in format sets the VERP extension flag for
   this message.

   envid is the original message envelope ID, that will be shown on any
   delivery status notifications. NOTE: envid must be specified using
   xtext encoding (see the relevant RFCs).

   After reading the first line of text, submit prints a response (see
   "RESPONSES FROM SUBMIT", above). If the response is a failure, submit
   terminates immediately. Otherwise, submit then reads one or more
   envelope recipients.

   Each envelope recipient is read as a single non-empty line of text,
   formatted as follows:

       address<tab>dsn<tab>orecipient

   address is a non-empty recipient E-mail address, optionally followed by
   the tab character, then zero or more characters specifying dsn, then a
   tab character, then the orecipient value.

   dsn is zero or more of the following characters: S - send a delivery
   status notification upon a successful delivery to this address, F -
   send a DSN upon a failed delivery, D - send a DSN upon a mail delay, N
   - never send a DSN.  orecipient is the "Original Recipient", as
   specified in RFC1894, using xtext encoding.

   submit will print a response to each recipient (see "RESPONSES FROM
   SUBMIT", above). If at least one recipient address has been succesfully
   specified, a blank line is read to specify end of recipient list, which
   is followed by the entire message, headers and body.

   A single blank line terminates the list of recipients. That is followed
   by the message itself, until end of file.

   The blank line can be present before even a the first recipient is
   specified. If so, submit obtains the list of recipient from the
   message's headers.

   submit reads the message headers and body until end-of-file. Then,
   submit prints a response (see above), indicating whether or not the
   message was accepted for delivery, and terminates.

ADDRESS REWRITING

   Each recipient address (whether specified explicitly, or obtained from
   the message headers), will be rewritten according to the rewriting
   rules specified by the input module. Each address in the headers of the
   message will also be rewritten.

   After rewriting each recipient address, submit will search the
   aliases.dat file for this address, to see if it represents a locally
   defined alias. Submit searches
   /usr/lib/courier/courier/modules/module/aliases.dat and
   /etc/courier/aliases.dat (actual locations may be changed by the system
   administrator). If the address is found, the recipient address will be
   replaced by the addresses defined in the aliases.dat file.

ENVIRONMENT VARIABLES

   submit also reads the following environment variables to further
   specify how the message is to be processed:

   BLOCK
       If this variable is set to a non-empty value, submit will reject
       every recipient (in effect, rejecting the message). The contents of
       the environment variable will be used as the error message.

   DSNENVID
       If envid is not specified, or is blank, and this environment
       variable is defined, the contents of this variable is used as the
       original envelope id field for DSNs. Note that DSNENVID is copied
       verbatim into the Original-Envelope-Id field (if the message is
       relayed to another MTA, the Courier mail server automatically
       xtext-encodes it).

   DSNNOTIFY
       If the dsn field for a recipient is empty, the contents of this
       environment variable is used in its place. Also, if the recipient
       list is read from the headers, the contents of this environment
       variable are used to set the dsn setting.

   DSNRET
       If the format field for this message is empty, the contents of this
       environment variable is used in its place.

   NOADDDATE
       Normally the Courier mail server adds a Date: header to the
       message, if it does not have one. If this environment variable is
       set, the Courier mail server will not add a Date: header.

   NOADDMSGID
       Normally the Courier mail server adds a Message-Id: header to the
       message, if it does not have it. If this environment variable is
       set, the Courier mail server will not add a Message-Id: header.

   NOADDRREWRITE
       Normally the Courier mail server rewrites addresses in the From:,
       To:, and Cc: header fields. If this environment variable is set to
       1, the Courier mail server will not rewrite them. If it is set to a
       higher value, the Courier mail server will only rewrite it if no
       DKIM-Signature: header field was found.

   MIME
       Normally the Courier mail server adds any missing RFC2045 headers
       to the message. The MIME environment variable can be set to the
       following values: none - do not do any RFC2045 processing
       whatsoever; 7bit - if the message contains any 8-bit text, convert
       it to quoted-printable encoding; 8bit -if the message contains any
       quoted-printable encoded text that can be representing as
       8bit-encoded text, then convert it to 8bit encoding.

SEE ALSO

   courierpop3d(8)[1], couriertcpd(8)[2], authlib(7)[3].

AUTHOR

   Sam Varshavchik
       Author

NOTES

    1. courierpop3d(8)
       [set $man.base.url.for.relative.links]/courierpop3d.html

    2. couriertcpd(8)
       [set $man.base.url.for.relative.links]/couriertcpd.html

    3. authlib(7)
       [set $man.base.url.for.relative.links]/authlib.html





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.