Make Sendmail accept mail from external sources
When you're setting up servers the last thing you want to have to do is put in an all nighter in order to get Sendmail accepting email from outside of your local network. If you're new to Linux this can be a real nightmare. The good news is once this is configured, it'll just keep on working until you take it down. But getting Sendmail to the point where it is working correctly can be a real nightmare.
In this article I will give you a step by step setup for getting Sendmail to accept email from outside of localhost and your own LAN. This will require you to manually edit some configuration files and you will need root access (or sudo access) in order to do this.
In order for this to work I am going to assume you have your own domain name. For the sake of this article we'll illustrate with the sample domain www.sampledomain.com. I will also assume this FQDN is working properly and you have Sendmail already installed and starts properly. The operating system I am using for this example is Ubuntu Server 8.10. With that in mind, let's get to this.
/etc/mail
All of the configurations you will be doing will be within the /etc/mail directory. In this directory you will be modifying the following:
- sendmail.cf
- sendmail.mc
- access
- local-host-names
Once all of the modifications are made you will then restart Sendmail.
sendmail.mc
By default Sendmail is setup to only accept mail from localhost. This is the first change that needs to be made. This change is made in the sendmail.mc file. What you are looking for is the following line:
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Addr=127.0.0.1, Port=smtp')dnl
The line needs to be altered to look like:
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp')dnl
The Addr=127.0.0.1 section instructs Sendmail to only accept email from localhost.
Now you need to add these changes to the sendmail.cf file by issuing the command:
sudo make -C /etc/mail
This will add your changes. The reason I use sendmail.mc for these options is that configuring the DAEMON_OPTIONS is a bit confusing and hard to find. The other options are quite easy to add directly to sendmail.cf.
sendmail.cf
The options you will want to add in this file are for setting your domain name. The first option is under the "my official domain name" heading. What you will see in the example is:
#Dj$w.Foo.Com
replace this with (and remember we're using our sample domain):
Djsampledomain.com
The next option will be set for masquerading. In some recent Sendmail releases this is not in the cf by default. Take a look for the quoting section that looks like:
# dequoting map
Kdequote dequote
# class E: names that should be exposed as from this host, even if we masquerade
# class L: names that should be delivered locally, even if we have a relay
# class M: domains that should be converted to $M
# class N: domains that should not be converted to $M
#CL root
At the bottom of this add:
# who I masquerade as (null for no masquerading) (see also $=M)
DMsampledomain.com
Now you are done with the sendmail.cf file.
access
This file defines access control to your mail server. For our sample we will add the following to the bottom of this file:
sampledomain.com
www.sampledomain.com
mail.sampledomain.com
Save that file and you have one more configuration to take care of.
local-host-names
This file will define the host names associated with your Sendmail server. In this file we will add:
sampledomain.com
mail.sampledomain.com
Restart Sendmail
It is now time to restart Sendmail. Do this with the command:
/etc/init.d/sendmail reload
Once sendmail restarts you should be accepting email from the outside world. Run a test with an email address outside of your domain.
Final thoughts
Sendmail isn't really as difficult as it is made out to be. With this simple walkthrough you should have Sendmail accepting mail from all over quickly and easily.
Advertisement
Where do I put myname for [email protected] please advise thanks – k
No need to setup mx, a, cname, text files on the DNS for the server?
Great and simple write-up.
Amazing, worked very well!
Very helpful! Was able to get emails from outside my organization using Red Hat 5. For Red Hat 5 users, make sure to install the sendmail-cf package, or else your ‘make -C /etc/mail’ will fail.