Sendmail Setup for Your Home Network
Sendmail is an extraordinary piece of software, adaptable for complex to modest installations with different needs. Almost every UNIX administrator has faced the installation and configuration procedures of Sendmail and learned that the available options are extensive and, sometimes, frustrating.
In this article we will address a basic installation procedure (sort of a recipe for a quick set up of your mail server) for the average user. Assuming the system is a home or small company network with a Linux machine running Sendmail as the mail server, Sendmail's functions will be to receive mail messages from machines on the internal network, deliver local messages to their respective users and deliver to the Internet messages for external destinations. Additionally, the server will receive mail from the Internet.
I assume an internal network domain with the name intranet.mydomain.com, and the machines in this network use non-public IP numbers of the form 192.168.XXX.XXX. The mail server has an interface connected to the Internet with a real IP number needed for external mail reception using the domain mydomain.com.
In my experience I have found having different domains for internal and external networks makes it easier to have other types of setups, like DNS (domain name services), separate traffic and privacy.
Every Linux distribution includes Sendmail as one of the basic programs and some default configuration files that work well. However, if you are concerned about security or you are a do-it-yourself person, it is advisable to install the latest version of Sendmail. The procedure is straightforward, and you can use an updated RPM or download the source code from www.sendmail.org (I prefer the last method). Next, extract the sources and compile the program using the predefined scripts.
The following is a listing of the commands I used to unzip the tar file and build the code on my machine, which runs a Red Hat Linux 6.2 distribution.
$ tar -zxvf sendmail.8.11.2.tar.gz $ cd sendmail-8.11.2 $ ./Build $ su # ./Build install
Now you must set up the configuration files. If you have compiled the source version without modifications, all the required files will live in /etc/mail/. The most important file is /etc/mail/sendmail.cf; this file holds the options necessary for Sendmail to work and is a text file. In the old days, you would have had to edit this by hand to change the configuration, and if you look at the text, it is somewhat confusing.
Fortunately newer versions of Sendmail come with an easier setup procedure based on predefined blocks and macros that hide the details of the configuration--think of it as compiling a configuration file for Sendmail.
The following commands can be used to generate a valid Sendmail configuration file from the cf/cf subdirectory of the source directory.
$ cd sendmail-8.11.2 $ cd cf/cf $ cp generic-linux.mc myconfig.mc $ m4 ../m4/cf.m4 myconfig.mc > sendmail.cf
The resulting sendmail.cf file can be installed in /etc/mail and used to run the Sendmail server. You must restart the service to activate the new options. For Red Hat, this can be done with a command like:
# /etc/rc.d/init/sendmail restart
Now that you have generated a standard setup file for Sendmail, the next step is to build a file for the main mail server, the one that manages e-mail both internal and external on your network.
Listing 1 shows the complete source file for the configuration. I will now cover each of the features in more detail.
The combination of the allmasquerade, masquerade_envelope and MASQUERADE_AS features and directives are used to hide the names of the hosts in your internal network and make the mail messages appear to come from mydomain.com. This way you have a more uniform address across your organization, regardless of the internal machine used to send the e-mail.
The other section added to this file rewrites the recipient's address. This kind of rewrite generally occurs when an internal machine or a local program is used to send e-mail (pine on the mail server, for example). In that case the recipient address may contain the server name and intranet domain. What this rewrites does is catch this type of recipient address and rewrite it to a uniform address.
Creating a Configuration File for a Linux Client Machine
For the internal Linux machines on our network, we can create a configuration file because the client machines use the mail server (mailhub) to send the e-mail. In this form, all of the rewrites and masquerading rules already discussed before are applied to the mail sent from these machines. The contents of the file are:
OSTYPE(linux)dnl DOMAIN(generic)dnl MAILER(local)dnl MAILER(smtp)dnl FEATURE(nullclient, mailhub)dnl
The magic comes from the last line of this file. FEATURE(nullcient, mailhub) indicates we are using "mailhub" as our mail server. The Sendmail process on the client machines simply sent the e-mail to this server.
The procedure for generating the final sendmail.cf file is the same as specified in the previous section.
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?
|Dynamic DNS—an Object Lesson in Problem Solving||May 21, 2013|
|Using Salt Stack and Vagrant for Drupal Development||May 20, 2013|
|Making Linux and Android Get Along (It's Not as Hard as It Sounds)||May 16, 2013|
|Drupal Is a Framework: Why Everyone Needs to Understand This||May 15, 2013|
|Home, My Backup Data Center||May 13, 2013|
|Non-Linux FOSS: Seashore||May 10, 2013|
- RSS Feeds
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Using Salt Stack and Vagrant for Drupal Development
- Dynamic DNS—an Object Lesson in Problem Solving
- New Products
- Validate an E-Mail Address with PHP, the Right Way
- Drupal Is a Framework: Why Everyone Needs to Understand This
- A Topic for Discussion - Open Source Feature-Richness?
- Download the Free Red Hat White Paper "Using an Open Source Framework to Catch the Bad Guy"
- Tech Tip: Really Simple HTTP Server with Python
- Keeping track of IP address
1 hour 33 min ago
- Roll your own dynamic dns
6 hours 46 min ago
- Please correct the URL for Salt Stack's web site
9 hours 58 min ago
- Android is Linux -- why no better inter-operation
12 hours 13 min ago
- Connecting Android device to desktop Linux via USB
12 hours 42 min ago
- Find new cell phone and tablet pc
13 hours 40 min ago
15 hours 9 min ago
- Automatically updating Guest Additions
16 hours 17 min ago
- I like your topic on android
17 hours 4 min ago
- This is the easiest tutorial
23 hours 39 min ago