Wednesday, October 7, 2009

Sendmail Quick Reference


Tips and Tricks for Sendmail

mailq – Prints the mail queue's contents, same as /usr/lib/sendmail –bp

newaliases – Rebuilds the aliases database file, same as /usr/lib/sendmail –bi

hoststat – Prints persistent host status info, same as /usr/lib/sendmail -bh

purgestat – Purges (zeroes) persistent host status info, same as /usr/lib/sendmail -bH

smtpd – Runs in daemon mode, same as /usr/lib/sendmail –bd –q30

mailq –OmaxQueueRunSize=1 - Quickly print the total number of messages within mail queue

/usr/lib/sendmail –q –Otimeout.queuereturn=99d - Purges the mail queue without timing out any messages. Useful if the mail server has been down longer than the queuereturn value set in the cf.

/usr/lib/sendmail –bv foolist | grep –v deliverable - Prints only undeliverable addresses from in the mail list foolist. Great for use in a shell script to remove badd addresses from a mailing list.

Command Line Switches

-B 7bit - Causes sendmail to clear the high-bit of every incoming byte.

-B 8bitmime – Causes sendmail to preserve the high-bit or every incoming byte.

-ba – Uses ARPAnet/Grey-Book protocols to transfer mail.

-bD – Runs as daemon, like –bd, but does not fork and does not detach from controlling terminal.

-bd – Runs as daemon, forks and detaches.

-bH - Purges (zeroes) persistent host status info.

-bh - Prints persistent host status info.

-bi - Initializes the aliases database.

-bm – Causes sendmail to read and send message (this is the default)

-bp – Prints the contents of the mail queue.

-bs – Runs sendmail on standard I/O.

-bt – Runs sendmail in rule testing mode.

-bv
- Verifies address.

-C /tmp/different.cf – Uses different.cf as its configuration file.

-c - Sets HoldExpensive option to true.

-d - set debug mode.

* -d0 – Shows general config
* -d0.1 – Prints version
* -d.04 – Prints local hostname and any aliases for it.
* -d0.15 – Prints the list of delivery agents declared
* -d0.20 – Prints address of each network interface
* -d8 – Traces most DNS lookups
* -d8.1 – Prints failure of low level MX searches.
* -d8.2 – Prints calls to getcanonname
* -d8.3 - Traces dropped local hostnames
* -d8.5 – Shows hostnames tried in getcanonname
* -d8.8 – Shows when MX lookups return the wrong type.
* -d11 – Traces delivery agent calls
* -d11.1 – Traces arguments passed to the delivery agent
* -d11.2 - Prints the user ID that the delivery agent is invoked as
* -d21 – Traces rewriting of addresses
* -d21.1- Traces general ruleset rewriting
* -d21.2 – Traces use of $& macro
* -d21.3 – Shows $> subroutines called
* -d21.4 – Displays result of rewrite
* -d21.15 – Shows $digit replacement
* -d21.35 – shows token by token LHS matching
* -d27 – Traces aliasing
* -d27.1 – Traces general aliasing
* -d27.2 – Traces :include: files, alias self-references, and errors on home
* -d27.3 – Traces the ~/.forward path and the alias wait
* -d27.4 – Prints "not safe" when a file is unsafe to trust
* -d27.9 – Shows uid/gid changes when reading :include: files
* -d35 – Traces macros
* -d35.9 shows macro values as they are defined
* -d35.14 – Shows macro names being converted to integer id’s
* -d35.24 – Shows macro expansion
* -d37 – Traces options and class macros
* -d37.1 – Traces the setting of options
* -d37.8 – Traces the adding of words to a class
* -d41 – Traces the queue
* -d41.1 – Traces queue ordering
* -d41.2 – Shows failure to open qf files
* -d41.49 – Shows skipped queue files
* -d41.50 – Show every file in queue

-F - Set senders full name

-f
- Set senders address

-h - Set minimum hop count

-i – Set IgnoreDots option to true

-M - Set macro

-N - Set return DNS notify information

* never – Never return the info
* success – Return on successful delivery
* failure – Return on failure
* delay – Return on delayed delivery

-n – Supresses aliasing

-O - Set an option (long name)

-o – Set an option (short name)

-pUUCP:test – Sets protocol in $r macro to UUCP and $s macro to test

-q30m – Sets queue processing to every 30 min

-qR@here.com – Processes the queue once delivering only mail to @here.com

-R hdrs – bounces only the headers

-R full – Bounces headers and body

-s – Sets SaveFromLine option to true

-T 5d – Sets Timeout.queuereturn option to 5 days

-t – Gathers a list of recipients from messages headers

-U – make this the initial MUA to MTA submission

-V test123456 – Sets the DSN ENVID string to test123456

-v – Runs sendmail in verbose mode

-X /var/tmp/trace.mail – Logs both sides of smtp transactions to trace.mail file.



Rule Testing Mode (/usr/lib/sendmail –bt)

? – Prints help

.DrUUCP – Defines macro r as UUCP

=S5 – Prints the contents of ruleset 5

=M – Displays list of delivery agents

${name} – Prints the value of macro name.

$=w – prints the contents of the class macro w

/mx here.com – Returns the MX records for here.com in the order they will be utilized

/parse foo – Parses the value of the address foo, returns the value of crackaddr(), and the final parsed address including the delivery agent.

/try local foo – Rewrites the address foo based on the rules for local delivery

/tryflags HS – Sets the flags used by /parse and /try to H for header and S for sender, can also use E for envelope and R for recipient

/canon foo - Transforms the hostname foo into its canonical form

/map aliases foo – Looks up foo in the aliases database

3,0 – me@foo – Runs the address me@foo through rulesets 3 and 0