Controlling SMTP Relaying
(Note: See also Claus Aßmann's Relaying Denied/Allowed in sendmail 8.8/8.9 (external link) and Relay Control for Roaming Users (external link) and pages.)
As of sendmail version 8.9, forwarding of SMTP messages is not
permitted by default. For example, if you are on site
A.COM, you will not accept mail from
B.NET destined for C.ORG without special
arrangements. These instructions assume that you are using the M4
technique for creating your sendmail.cf files; if you are not, you
are on your own.
The simplest approach is to list the domains you are willing to
relay in the file /etc/mail/relay-domains. Anything
listed in this file will be accepted for relaying. N.B.:
Sendmail must be restarted after this file is modified.
For more precise tuning, several FEATUREs have been
added to control relaying:
FEATURE(relay_hosts_only). Normally domains are listed in/etc/mail/relay-domains; any hosts in those domains match. With this feature, each host in a domain must be listed.FEATURE(relay_entire_domain). Setting this feature allows relaying of all hosts within your domain. For example, on the hostgateway.A.COM, this feature allows mail to or from any host in theA.COMdomain. More precisely, this relays any host listed in the$=mclass. This is equivalent to listing the name of the domain in/etc/mail/relay-domains.FEATURE(access_db). This enables the hash database/etc/mail/accessto enable or disable access from individual domains (or hosts, ifFEATURE(relay_hosts_only)is set). The database format is described below.FEATURE(blacklist_recipients). If set, this feature looks up recipients as well as senders in the access database.FEATURE(rbl). NOTE: Thie feature is obsolete. UseFEATURE(dnsbl)in newer versions of sendmail. Enables rejection of mail based on the Realtime Blackhole List maintained at mail-abuse.org.FEATURE(dnsbl). Enables rejection of mail based on the Realtime Blackhole List maintained at mail-abuse.org.FEATURE(accept_unqualified_senders). Normally, sendmail will not accept mail from a sender without a domain attached -- for example,userinstead ofuser@B.NET. This feature allows such users.FEATURE(accept_unresolvable_domains). Normally, sendmail will refuse to accept mail that has a return address with a domain that cannot be resolved using the regular host lookups (a technique commonly used by spammers). This feature permits acceptance of such addresses. Unresolvable domains can be selectively accepted using the access database.FEATURE(relay_based_on_MX). Setting this feature permits relaying for any domain that is directed to your host.
Several other features are probably a bad idea, unless you are inside a firewall, because they make your system vulnerable to abuse by spammers:
FEATURE(relay_local_from). This feature allows relaying if the message claims to originate at your domain. Since forging this address is trivial, this is probably a bad idea.FEATURE(loose_relay_check). This turns off checking for explicit routing through your host, such astarget%C.ORG@A.COM.FEATURE(promiscuous_relay). If you really want to forward all the spam on the net, this will turn off all checking for relaying.
The Access Database
The access database (normally in /etc/mail/access)
allows a mail administrator to administratively allow access to the
mail server by individual domains. Each database entry consists of
a domain name or network number as the key and an action as the
value.
Keys can be a fully or partly qualified host or domain name such
as host.subdomain.domain.com,
subdomain.domain.com, or domain.com. The
last two forms match any host or subdomain under the specified
domain. (If FEATURE(relay_hosts_only) is set, only the
first form works.) Keys can also be a network address or
subnetwork, e.g., 205.199.2.250,
205.199.2, or 205.199. The latter two
forms match any host in the indicated subnetwork. Lastly, keys can
be user@host.domain to reject mail from a specific
user.
Values can be REJECT to refuse connections from
this host, DISCARD to accept the message but silently
discard it (the sender will think it has been accepted),
OK to allow access (overriding other built-in checks),
RELAY to allow access including relaying SMTP through
your machine, or an arbitrary message to reject the mail with the
customized message.
For example, a database might contain:
cyberpromo.com REJECT
sendmail.org RELAY
spam@buyme.com 550 Spammers shan't see sunlight here
to reject all mail from any host in the cyberpromo.com
domain, allow any relaying to or from any host in the
sendmail.org domain, and reject mail from
spam@buyme.com with a specific message.
Note that the access database is a map and just as with all maps, the database must be generated using makemap. For example:
makemap hash /etc/mail/access < /etc/mail/access