virtual.8.html   [plain text]


<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html> <head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<title> Postfix manual - virtual(8) </title>
</head> <body> <pre>
VIRTUAL(8)                                                          VIRTUAL(8)

<b>NAME</b>
       virtual - Postfix virtual domain mail delivery agent

<b>SYNOPSIS</b>
       <b>virtual</b> [generic Postfix daemon options]

<b>DESCRIPTION</b>
       The <a href="virtual.8.html"><b>virtual</b>(8)</a> delivery agent is designed for virtual mail
       hosting services. Originally based on the Postfix <a href="local.8.html"><b>local</b>(8)</a>
       delivery  agent,  this  agent looks up recipients with map
       lookups of their full recipient address, instead of  using
       hard-coded unix password file lookups of the address local
       part only.

       This delivery agent only delivers  mail.   Other  features
       such  as  mail  forwarding,  out-of-office  notifications,
       etc., must be configured via  virtual_alias  maps  or  via
       similar lookup mechanisms.

<b>MAILBOX LOCATION</b>
       The  mailbox  location  is controlled by the <b><a href="postconf.5.html#virtual_mailbox_base">virtual_mail</a>-</b>
       <b><a href="postconf.5.html#virtual_mailbox_base">box_base</a></b> and <b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a></b> configuration parameters
       (see below).  The <b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a></b> table is indexed by
       the recipient address  as  described  under  TABLE  SEARCH
       ORDER below.

       The mailbox pathname is constructed as follows:

         <b>$<a href="postconf.5.html#virtual_mailbox_base">virtual_mailbox_base</a>/$virtual_mailbox_maps(</b><i>recipient</i><b>)</b>

       where <i>recipient</i> is the full recipient address.

<b>UNIX MAILBOX FORMAT</b>
       When  the  mailbox location does not end in <b>/</b>, the message
       is delivered in UNIX mailbox format.   This format  stores
       multiple messages in one textfile.

       The  <a href="virtual.8.html"><b>virtual</b>(8)</a>  delivery  agent  prepends  a "<b>From</b> <i>sender</i>
       <i>time</i><b>_</b><i>stamp</i>" envelope header to each  message,  prepends  a
       <b>Delivered-To:</b>  message  header with the envelope recipient
       address, prepends an <b>X-Original-To:</b> header with the recip-
       ient  address as given to Postfix, prepends a <b>Return-Path:</b>
       message header with the envelope sender address,  prepends
       a &gt; character to lines beginning with "<b>From</b> ", and appends
       an empty line.

       The mailbox is locked for exclusive access while  delivery
       is in progress. In case of problems, an attempt is made to
       truncate the mailbox to its original length.

<b>QMAIL MAILDIR FORMAT</b>
       When the mailbox location ends in <b>/</b>, the message is deliv-
       ered  in qmail <b>maildir</b> format. This format stores one mes-
       sage per file.

       The <a href="virtual.8.html"><b>virtual</b>(8)</a> delivery  agent  prepends  a  <b>Delivered-To:</b>
       message  header with the final envelope recipient address,
       prepends  an  <b>X-Original-To:</b>  header  with  the  recipient
       address  as  given to Postfix, and prepends a <b>Return-Path:</b>
       message header with the envelope sender address.

       By definition, <b>maildir</b> format does  not  require  applica-
       tion-level file locking during mail delivery or retrieval.

<b>MAILBOX OWNERSHIP</b>
       Mailbox ownership is controlled  by  the  <b><a href="postconf.5.html#virtual_uid_maps">virtual_uid_maps</a></b>
       and <b><a href="postconf.5.html#virtual_gid_maps">virtual_gid_maps</a></b> lookup tables, which are indexed with
       the full recipient address. Each table provides  a  string
       with the numerical user and group ID, respectively.

       The <b><a href="postconf.5.html#virtual_minimum_uid">virtual_minimum_uid</a></b> parameter imposes a lower bound on
       numerical user ID values that may be specified in any <b><a href="postconf.5.html#virtual_uid_maps">vir</a>-</b>
       <b><a href="postconf.5.html#virtual_uid_maps">tual_uid_maps</a></b>.

<b>CASE FOLDING</b>
       All  delivery  decisions are made using the full recipient
       address, folded to lower case. See also the  next  section
       for a few exceptions with optional address extensions.

<b>TABLE SEARCH ORDER</b>
       Normally,  a lookup table is specified as a text file that
       serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command. The result,  an
       indexed file in <b>dbm</b> or <b>db</b> format, is used for fast search-
       ing by the mail system.

       The search order is as follows. The search stops upon  the
       first successful lookup.

       <b>o</b>      When  the  recipient has an optional address exten-
              sion  the  <i>user+extension@domain.tld</i>   address   is
              looked up first.

              With  Postfix  versions  before  2.1,  the optional
              address extension is always ignored.

       <b>o</b>      The <i>user@domain.tld</i> address, without address exten-
              sion, is looked up next.

       <b>o</b>      Finally, the recipient <i>@domain</i> is looked up.

       When  the  table  is provided via other means such as NIS,
       LDAP or SQL, the same lookups are  done  as  for  ordinary
       indexed files.

       Alternatively,  a  table  can  be  provided  as a regular-
       expression map where patterns are given as regular expres-
       sions.  In  that  case, only the full recipient address is
       given to the regular-expression map.

<b>SECURITY</b>
       The <a href="virtual.8.html"><b>virtual</b>(8)</a> delivery agent is not  security  sensitive,
       provided  that the lookup tables with recipient user/group
       ID information are adequately protected. This  program  is
       not designed to run chrooted.

       The <a href="virtual.8.html"><b>virtual</b>(8)</a> delivery agent disallows regular expression
       substitution of  $1  etc.  in  regular  expression  lookup
       tables, because that would open a security hole.

       The   <a href="virtual.8.html"><b>virtual</b>(8)</a>   delivery  agent  will  silently  ignore
       requests to use the <a href="proxymap.8.html"><b>proxymap</b>(8)</a> server.  Instead  it  will
       open  the  table directly. Before Postfix version 2.2, the
       virtual delivery agent will terminate with a fatal  error.

<b>STANDARDS</b>
       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)

<b>DIAGNOSTICS</b>
       Mail bounces when the recipient has no mailbox or when the
       recipient is over disk quota. In all other cases, mail for
       an existing recipient is deferred and a warning is logged.

       Problems and transactions are logged to <b>syslogd</b>(8).   Cor-
       rupted  message files are marked so that the queue manager
       can move them to the <b>corrupt</b> queue afterwards.

       Depending on the setting of the <b><a href="postconf.5.html#notify_classes">notify_classes</a></b>  parameter,
       the  postmaster  is notified of bounces and of other trou-
       ble.

<b>BUGS</b>
       This delivery agent supports address extensions  in  email
       addresses and in lookup table keys, but does not propagate
       address extension  information  to  the  result  of  table
       lookup.

       Postfix should have lookup tables that can return multiple
       result attributes. In order to avoid the inconvenience  of
       maintaining three tables, use an LDAP or MYSQL database.

<b>CONFIGURATION PARAMETERS</b>
       Changes  to  <a href="postconf.5.html"><b>main.cf</b></a>  are picked up automatically, as <a href="virtual.8.html"><b>vir-</b></a>
       <a href="virtual.8.html"><b>tual</b>(8)</a> processes run for only a limited amount  of  time.
       Use the command "<b>postfix reload</b>" to speed up a change.

       The  text  below  provides  only  a parameter summary. See
       <a href="postconf.5.html"><b>postconf</b>(5)</a> for more details including examples.

<b>MAILBOX DELIVERY CONTROLS</b>
       <b><a href="postconf.5.html#virtual_mailbox_base">virtual_mailbox_base</a> (empty)</b>
              A  prefix  that  the  <a href="virtual.8.html"><b>virtual</b>(8)</a>   delivery   agent
              prepends   to   all  pathname  results  from  $<a href="postconf.5.html#virtual_mailbox_maps">vir</a>-
              <a href="postconf.5.html#virtual_mailbox_maps">tual_mailbox_maps</a> table lookups.

       <b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a> (empty)</b>
              Optional lookup tables with all valid addresses  in
              the domains that match $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.

       <b><a href="postconf.5.html#virtual_minimum_uid">virtual_minimum_uid</a> (100)</b>
              The  minimum  user  ID  value  that  the <a href="virtual.8.html"><b>virtual</b>(8)</a>
              delivery agent  accepts  as  a  result  from  $<a href="postconf.5.html#virtual_uid_maps">vir</a>-
              <a href="postconf.5.html#virtual_uid_maps">tual_uid_maps</a> table lookup.

       <b><a href="postconf.5.html#virtual_uid_maps">virtual_uid_maps</a> (empty)</b>
              Lookup  tables  with the per-recipient user ID that
              the <a href="virtual.8.html"><b>virtual</b>(8)</a> delivery agent uses while writing to
              the recipient's mailbox.

       <b><a href="postconf.5.html#virtual_gid_maps">virtual_gid_maps</a> (empty)</b>
              Lookup  tables  with the per-recipient group ID for
              <a href="virtual.8.html"><b>virtual</b>(8)</a> mailbox delivery.

       Available in Postfix version 2.0 and later:

       <b><a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> ($<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>)</b>
              Postfix is final destination for the specified list
              of   domains;  mail  is  delivered  via  the  $<a href="postconf.5.html#virtual_transport">vir</a>-
              <a href="postconf.5.html#virtual_transport">tual_transport</a> mail delivery transport.

       <b><a href="postconf.5.html#virtual_transport">virtual_transport</a> (virtual)</b>
              The default mail delivery  transport  and  next-hop
              destination  for  final  delivery to domains listed
              with $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.

       Available in Postfix version 2.5.3 and later:

       <b><a href="postconf.5.html#strict_mailbox_ownership">strict_mailbox_ownership</a> (yes)</b>
              Defer delivery when a mailbox file is not owned  by
              its recipient.

<b>LOCKING CONTROLS</b>
       <b><a href="postconf.5.html#virtual_mailbox_lock">virtual_mailbox_lock</a> (see 'postconf -d' output)</b>
              How  to lock a UNIX-style <a href="virtual.8.html"><b>virtual</b>(8)</a> mailbox before
              attempting delivery.

       <b><a href="postconf.5.html#deliver_lock_attempts">deliver_lock_attempts</a> (20)</b>
              The maximal number of attempts to acquire an exclu-
              sive lock on a mailbox file or <a href="bounce.8.html"><b>bounce</b>(8)</a> logfile.

       <b><a href="postconf.5.html#deliver_lock_delay">deliver_lock_delay</a> (1s)</b>
              The  time  between attempts to acquire an exclusive
              lock on a mailbox file or <a href="bounce.8.html"><b>bounce</b>(8)</a> logfile.

       <b><a href="postconf.5.html#stale_lock_time">stale_lock_time</a> (500s)</b>
              The time after  which  a  stale  exclusive  mailbox
              lockfile is removed.

<b>RESOURCE AND RATE CONTROLS</b>
       <b><a href="postconf.5.html#virtual_destination_concurrency_limit">virtual_destination_concurrency_limit</a>   ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destina</a>-</b>
       <b><a href="postconf.5.html#default_destination_concurrency_limit">tion_concurrency_limit</a>)</b>
              The  maximal  number  of parallel deliveries to the
              same destination via the virtual  message  delivery
              transport.

       <b><a href="postconf.5.html#virtual_destination_recipient_limit">virtual_destination_recipient_limit</a>     ($<a href="postconf.5.html#default_destination_recipient_limit">default_destina</a>-</b>
       <b><a href="postconf.5.html#default_destination_recipient_limit">tion_recipient_limit</a>)</b>
              The  maximal  number  of recipients per message for
              the virtual message delivery transport.

       <b><a href="postconf.5.html#virtual_mailbox_limit">virtual_mailbox_limit</a> (51200000)</b>
              The maximal size in bytes  of  an  individual  <a href="virtual.8.html"><b>vir-</b></a>
              <a href="virtual.8.html"><b>tual</b>(8)</a>  mailbox  or  maildir  file,  or  zero  (no
              limit).

<b>MISCELLANEOUS CONTROLS</b>
       <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
              The default location of  the  Postfix  <a href="postconf.5.html">main.cf</a>  and
              <a href="master.5.html">master.cf</a> configuration files.

       <b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
              How  much time a Postfix daemon process may take to
              handle a request  before  it  is  terminated  by  a
              built-in watchdog timer.

       <b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b>
              The  maximal  number  of  digits  after the decimal
              point when logging sub-second delay values.

       <b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
              The time limit for sending or receiving information
              over an internal communication channel.

       <b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
              The  maximum  amount  of  time that an idle Postfix
              daemon process waits  for  an  incoming  connection
              before terminating voluntarily.

       <b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
              The  maximal  number of incoming connections that a
              Postfix daemon process will service  before  termi-
              nating voluntarily.

       <b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
              The  process  ID  of  a  Postfix  command or daemon
              process.

       <b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b>
              The process name of a  Postfix  command  or  daemon
              process.

       <b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
              The  location of the Postfix top-level queue direc-
              tory.

       <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
              The syslog facility of Postfix logging.

       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
              The mail system  name  that  is  prepended  to  the
              process  name  in  syslog  records, so that "smtpd"
              becomes, for example, "postfix/smtpd".

<b>SEE ALSO</b>
       <a href="qmgr.8.html">qmgr(8)</a>, queue manager
       <a href="bounce.8.html">bounce(8)</a>, delivery status reports
       <a href="postconf.5.html">postconf(5)</a>, configuration parameters
       syslogd(8), system logging

<b>README_FILES</b>
       <a href="VIRTUAL_README.html">VIRTUAL_README</a>, domain hosting howto

<b>LICENSE</b>
       The Secure Mailer license must be  distributed  with  this
       software.

<b>HISTORY</b>
       This  delivery  agent  was originally based on the Postfix
       local delivery agent. Modifications  mainly  consisted  of
       removing  code  that either was not applicable or that was
       not safe in this context: aliases,  ~user/.forward  files,
       delivery to "|command" or to /file/name.

       The <b>Delivered-To:</b> message header appears in the <b>qmail</b> sys-
       tem by Daniel Bernstein.

       The <b>maildir</b> structure  appears  in  the  <b>qmail</b>  system  by
       Daniel Bernstein.

<b>AUTHOR(S)</b>
       Wietse Venema
       IBM T.J. Watson Research
       P.O. Box 704
       Yorktown Heights, NY 10598, USA

       Andrew McNamara
       andrewm@connect.com.au
       connect.com.au Pty. Ltd.
       Level 3, 213 Miller St
       North Sydney 2060, NSW, Australia

                                                                    VIRTUAL(8)
</pre> </body> </html>