Philip Hazel <ph10@???> probably said:
> When verifying an address in a local domain, the local part is going to
> be checked. Do you do anything in the directors that might give a
> temporary error, e.g. LDAP lookup, test for NFS files that might not be
> present?
No NFS, no LDAP - all that my local directors do are dbm lookups,
a couple of plain smartusers, local file existance and one mysql
lookup that is limited to a different domain (pop.pir.net).
I've had the same thing happen on another machine with essentially
the same config but without most of the complicated lookups (no
mysql or many of the dbm things).
:/
P.
------------------------------------------------------------------------
# A local address is passed to each in turn until it is accepted. #
######################################################################
# deal with virtual domains - just for virtual domains, look them up
virtual:
driver = aliasfile
file_transport = address_file
domains = dbm;EBASE/dbm/virtualDBEXT
file = EBASE/domains/${lc:${length_1:${domain}}/${domain}}DBEXT
search_type = dbm*
forbid_file
forbid_pipe
# HERE. Do you want qualify_preserve_domain on virtual domains.
# Also, see QPDSUFF in the macro definitions.
qualify_preserve_domain
# if the virtual domain has no postmaster or root alias, throw them at
# ${qualify_recipient}
virtualpostmaster:
driver = smartuser
domains = dbm;EBASE/dbm/virtualDBEXT
local_parts = "postmaster:root"
new_address = ${local_part}@${qualify_recipient}
# and if there is a -something suffix, send it to the right place
virtualsuffix:
driver = smartuser
domains = dbm;EBASE/dbm/virtualDBEXT
no_more
suffix = DSUFFIX*
new_address = "\
${lookup{$local_part} dbm \
{EBASE/domains/${lc:${length_1:${domain}}/${domain}}DBEXT} \
{\
${if !match {$value}{^:(defer|fail|blackhole|include):} \
{${local_part:$value}${local_part_suffix}@\
${if eq {${domain:$value}} {} QPDSUFF {${domain:$value}}}}\
fail}\
}\
fail}"
# cyrus imap/pop server
cyrus_mysql:
driver = aliasfile
search_type = mysql
query = "select userid from users where userid='$local_part'"
transport = cyrus_pipe
domains = pop.MDOM
local_parts = !postmaster : !root : !news : !exim : !cyrus : *
user = cyrus
group = cyrus
suffix = DSUFFIX*
suffix_optional
no_more
# root, postmaster, uucp, etc, should always go to a central place
toadmin:
driver = smartuser
domains = "*.MDOM"
local_parts = "root:postmaster:exim:news:usenet:uucp:\
daemon:lp:sys:adm:cyrus:auth"
new_address = ${local_part}@${qualify_recipient}
# HERE. Use this if its a desktop box and you want all the admin mail to
# yourself rather than central.
# new_address = foo@${qualify_recipient}
# mailman stuff
mailman_owner1:
driver = smartuser
domains = MMANDOM:MAJORDOM
local_parts = "mailman:mailman-owner"
new_address = "postmaster@MDOM"
mailman_owner2:
driver = smartuser
domains = MMANDOM:MAJORDOM
require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db
suffix = "-owner"
new_address = "${lc:$local_part}-admin@${domain}"
mailman_owner3:
driver = smartuser
domains = MMANDOM:MAJORDOM
require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db
prefix = "owner-"
new_address = "${lc:$local_part}-admin@${domain}"
mailman_admin:
driver = smartuser
domains = MMANDOM:MAJORDOM
suffix = -admin
require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db
transport = mailman_admin_transport
mailman_request:
driver = smartuser
domains = MMANDOM:MAJORDOM
suffix = -request
require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db
transport = mailman_request_transport
mailman:
driver = smartuser
domains = MMANDOM:MAJORDOM
require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db
transport = mailman_transport
# no_more
# Majordomo general aliases.
majordomo_general:
driver = aliasfile
pipe_transport = address_pipe
domains = MAJORDOM
qualify_preserve_domain
file = MAJORDIR/dbm/general.aliases
search_type = lsearch
user = majordomo
group = majordomo
home_directory = MAJORDIR
errors_to = postmaster@MDOM
# Majordomo private outgoing.
majordomo_private:
driver = aliasfile
domains = MAJORDOM
transport = majordomo_out
file = MAJORDIR/dbm/list
search_type = lsearch
suffix = -out
user = majordomo
group = majordomo
errors_to = postmaster@MDOM
condition = "${if eq {$received_protocol}{local} \
{${if eq {$sender_ident}{majordomo} \
{true}{false}}}{false}}"
# Automatic majordomo list recognition and resending
majordomo_lists:
driver = aliasfile
domains = MAJORDOM
transport = majordomo_resend
file = MAJORDIR/dbm/list
search_type = lsearch
user = majordomo
group = majordomo
errors_to = postmaster@MDOM
# Automatic majordomo list recognition and resending
majordomo_request:
driver = aliasfile
domains = MAJORDOM
transport = majordomo_request
file = MAJORDIR/dbm/list
search_type = lsearch
user = majordomo
group = majordomo
errors_to = postmaster@MDOM
suffix = -request
suffix_optional
prefix = "request-"
prefix_optional
# mail to the various majordomo list owner addresses
majordomo_owner:
driver = aliasfile
domains = MAJORDOM
file = MAJORDIR/dbm/list
search_type = lsearch
user = majordomo
group = majordomo
suffix = "-out:-owner:-approval"
suffix_optional
prefix = "owner-"
prefix_optional
no_more
# HERE. Do you do any mail2news delivery ?
# deal with mail2news
mail2news:
driver = aliasfile
# HERE. What mail2news domain ?
domains = news.MDOM
transport = domail2news
no_more
search_type = dbm
file = EBASE/dbm/mail2newsDBEXT
errors_to = news@${qualify_recipient}
# This director handles aliasing using a traditional /etc/aliases file.
# If any of your aliases expand to pipes or files, you will need to set
# up a user and a group for these deliveries to run under. You can do
# this by uncommenting the "user" option below (changing the user name
# as appropriate) and adding a "group" option if necessary.
system_aliases:
driver = aliasfile
# HERE. Do you need file or pipe delivery in aliases ?
# file_transport = address_file
# pipe_transport = address_pipe
file = EBASE/dbm/aliasesDBEXT
search_type = dbm
# search_type = lsearch
# HERE. Uncomment these if you need to do pipes or other commands in the
# alias file.
user = exim
group = exim
# This director handles forwarding using traditional .forward files.
# If you want it also to allow mail filtering when a forward file
# starts with the string "# Exim filter", uncomment the "filter" option.
# The check_ancestor option means that if the forward file generates an
# address that is an ancestor of the current one, the current one gets
# passed on instead. This covers the case where A is aliased to B and B
# has a .forward file pointing to A.
# If sending to a username-suffix and $HOME/.forward-suffix exists,
# its valid.
userforward:
driver = forwardfile
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
no_verify
no_expn
check_ancestor
file = .forward${local_part_suffix}
filter
suffix = DSUFFIX*
suffix_optional
# Use procmail only if a ~/.procmailrc file exists, and procmail exists.
# If sending to a username-suffix and $HOME/.forward-suffix exists,
# its valid.
procmail:
driver = localuser
transport = procmail_pipe
require_files = "${local_part}:${home}/.procmailrc:+PROCMAILDIR/procmail\
:!${home}/.forward"
suffix = DSUFFIX*
suffix_optional
# This director matches local user mailboxes.
localuser:
driver = localuser
transport = local_delivery
# If the shell is "/sbin/sync" or empty then this is not deliverable.
condition = "${if match\
{${lookup{$local_part}lsearch{/etc/passwd} \
{${extract{6}{:}{$value}}} fail}} \
{^(/sbin/sync|)\\$} \
{0}{1}}"
end
------------------------------------------------------------------------
--
pir pir@??? pir@???