Setting up SMPT.

I use sendmail and if you want to use EXIM or QMAIL, smail or MMDF for that matter you have my blessing. Here's how I do it.

Sendmail has a bunch of components that all define how the system is going to work. Some of these include domain definition, RBLs, access, mailertable, procmail.

So without further ado, here's my /etc/mail/sendmail.mc file

divert(-1)
dnl This is the sendmail macro config file. If you make changes to this file,
dnl you need the sendmail-cf rpm installed and then have to generate a
dnl new /etc/sendmail.cf by running the following command:
dnl
dnl        m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
dnl

divert(-1)
include(`/usr/share/sendmail-cf/m4/cf.m4')
define(`confDEF_USER_ID',``8:12'')
VERSIONID(`syslang nodns')
Cwsaturn localhost
OSTYPE(`linux')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confTO_CONNECT', `1m')dnl
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(use_ct_file)
FEATURE(`smrsh',`/usr/sbin/smrsh')
FEATURE(nocanonify)
define(`confTO_QUEUEWARN', `5m')
define(`confSAFE_FILE_ENV', `/var/mailjail')dnl
FEATURE(relay_hosts_only)

define(`confCW_FILE', `-o /etc/mail/sendmail.cw')
define(`LUSER_RELAY', `local:steveo')
dnl define(`ALIAS_FILE',`/etc/aliases,/usr/local/majordomo/lists/ALIASES/mj-alias-syslang.net')dnl
FEATURE(`access_db',`hash -T -o /etc/mail/access.db')dnl
FEATURE(blacklist_recipients)dnl
FEATURE(`mailertable')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
FEATURE(virtusertable)
FEATURE(redirect)
MASQUERADE_AS(`syslang.net')
MASQUERADE_DOMAIN(`.syslang.net')
FEATURE(`delay_checks')
FEATURE(`dnsbl', `blackholes.easynet.nl', `"550 5.7.1 ACCESS DENIED to <"$&f"> thru "$&{client_name}" by easynet.nl DNSBL (http://blackholes.easynet.nl/errors.html)"', `')dnl
FEATURE(dnsbl,`bl.spamcop.net', `"Spam blocked see: http://spamcop.net/bl.shtml?"$&{client_addr}')dnl 
FEATURE(dnsbl,`dnsbl.njabl.org',`Message from $&{client_addr} rejected - see http://njabl.org/')dnl
FEATURE(dnsbl,`list.dsbl.org')dnl
dnl FEATURE(dnsbl, `relays.osirusoft.com')dnl
dnl FEATURE(dnsbl,`blackholes.five-ten-sg.com')dnl
FEATURE(dnsbl,`opm.blitzed.org')dnl
FEATURE(dnsbl,`orbs.dorkslayers.com')dnl
FEATURE(dnsbl,`relays.ordb.org')dnl
FEATURE(dnsbl,`tr.countries.nerd.dk', `SPAM from Turkey:$&{client_addr} rejected')dnl
FEATURE(dnsbl,`kr.countries.nerd.dk', `SPAM from Korea:$&{client_addr} rejected')dnl
FEATURE(dnsbl,`cn.countries.nerd.dk', `SPAM from China:$&{client_addr} rejected')dnl
FEATURE(dnsbl,`nl.countries.nerd.dk', `SPAM from Netherlands:$&{client_addr} rejected')dnl
FEATURE(dnsbl,`ee.countries.nerd.dk', `SPAM from Estonia:$&{client_addr} rejected')dnl
FEATURE(dnsbl,`br.countries.nerd.dk', `SPAM from Brazil:$&{client_addr} rejected')dnl
FEATURE(dnsbl,`id.countries.nerd.dk', `SPAM from Indonesia:$&{client_addr} rejected')dnl
FEATURE(dnsbl,`es.countries.nerd.dk', `SPAM from Spain:$&{client_addr} rejected')dnl
FEATURE(masquerade_entire_domain)
FEATURE(masquerade_envelope)
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
EXPOSED_USER(`root')dnl
MAILER(local)
MAILER(smtp)
MAILER(procmail)

LOCAL_CONFIG
# This regular expression matches some random X-Mailer headers.
#Krandommailer regex -f -S  -aREJECT ^[.0-9A-Za-z]*[0-9][.0-9A-Za-z]*$$

dnl regex map for character sets (not case-sensitive)
KCharsetKorean regex -a@MATCH charset=.*(euc-kr|korean|ks.*c)
KCharsetRussian regex -a@MATCH charset=.*koi8-r
KCharsetChinese regex -a@MATCH charset=.*(big5|Chinese|cn|gb)

LOCAL_RULESETS
##################################################################
#  Local ruleset - Check Content-Type:                           #
##################################################################
dnl Reject based on Content-Type header
HContent-Type:		$>CheckContentType
D{NoKoreanMsg}Korean not spoken here.
D{NoChineseMsg}Chinese not spoken here.
D{NoRussianMsg}Russian not spoken here.

SCheckContentType
R$*		$: $(CharsetRussian $&{currHeader} $)
R@MATCH		$#error $: 550 5.7.0 ${NoRussianMsg}
R$*		$: $(CharsetKorean $&{currHeader} $)
R@MATCH		$#error $: 550 5.7.0 ${NoKoreanMsg}
R$*		$: $(CharsetChinese $&{currHeader} $)
R@MATCH		$#error $: 550 5.7.0 ${NoChineseMsg}

# Reject mail sent by self-identifying spamware.
HX-Mailer: $>+CheckXMailer
SCheckXMailer
#R$+				$: $(randommailer $1 $)
RDirect Email $+		$: REJECT
REmailer Platinum $+		$: REJECT
RSent with E-Mail Magnet $+	$: REJECT
RGroup Mail $+			$: REJECT
REMailing List Pro $+		$: REJECT
Rdiffondi $+			$: REJECT
RMail Bomber			$: REJECT
RDynamic Opt-In Emailer $+	$: REJECT
RMaxBulk Mailer $+		$: REJECT
RFletMail $+			$: REJECT
RMailWorkZ $+			$: REJECT
RGoldMine $+			$: REJECT
RREJECT				$#error $@ 5.7.1 $: 553 Spam rejected

HX-Spam-Warning: $>CheckXSpamWarning
SCheckXSpamWarning
R$*				$#error $@ 5.5.3 $: 553 Spam rejected

Note that the stuff at the end allows me to reject all mail which is in foreign character sets or comes from people who are willing to annotate their mail as spam.