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 <address> - Verifies address.

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

-c - Sets HoldExpensive option to true.

-d <facility.level> - 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 <name> - Set senders full name

-f <address> - Set senders address

-h <count> - Set minimum hop count

-i – Set IgnoreDots option to true

-M<macro><value> - Set macro

-N<switch> - 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<option=value> - 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