Configuring SendMail To Act As A SmartHost & To Rewrite From-Address
This tutorial explains how to configure a sendmail server to forward all mails generated from localhost to another SMTP server for sending mails to remote recipients. Also it explains how to rewrite the from address of [email protected] to [email protected].
Example Scenario: You have a production server which is not configured to relay mails externally, but there is a application running in that server which mails its log to the given email address regarding its status and incase of any service failures. since the sendmail runs locally on localhost.localdomain name it tries to forward the mail with [email protected] to the remote smtp server, which would get rejected because of the reason that localhost.localdomain resolves to Invalid IP. So in order to overcome that we have to rewrite the from address of [email protected] to [email protected]. so that the other smtp server relays the mail from [email protected] to the [email protected] or whatever address you want to send the service status mail to.
NOTE: Specific parts of this tutorial applies only to Redhat Based Systems, but in general the procedure applies to all sendmail servers.
SMARTHOST IP : 10.1.1.50
SMTP HOST IP : 10.1.1.10
Check for Installed RPMS:
First the Sendmail rpms should get installed. By default Sendmail gets installed with the system installation.
Check for installed sendmail rpms:
root@nerdplanet# rpm -q sendmail sendmail-cf
These two packages should list as installed:
sendmail-8.xx
sendmail-cf-8.xx
If not installed already then install them.
Install the Rpms
root@nerdplanet# yum install sendmail sendmail-cf
It should install them in your linux system.
Once installed you have to make sure the server is started and starts automatically on reboot.
root@nerdplanet# chkconfig sendmail on
root@nerdplanet# service sendmail start
Now the server is up and running.
First add the remote server ip address and its domain name to the /etc/hosts
vi /etc/hosts
10.1.1.10 smtp.example.com
You dont have to do the above step if your local dns can resolve the domain name to the ip address of the smtp server which is configured to relay mail.
Edit the Sendmail configuration file for forwarding mails
vi /etc/mail/sendmail.mc
Forwarding mails to smarthost
dnl # define(`SMART_HOST',`smtp.example.net')
Find the line which contains the above entry and replace it with your smtp server address.
define(`SMART_HOST',`smtp.example.com')
Then save the file.
For rewriting the from address of the mails create genericstable file.
vi /etc/mail/genericstable
In the Generics table file enter the following lines:
root [email protected] mohan [email protected]
The above lines mean that if any mails sent by root will be masqueraded and appear to come from as [email protected] instead of [email protected] and if any mail sent by the user mohan will appear to come from [email protected] instead of [email protected]
Then save the file.
Enabling Features in the sendmail configuration file.
vi /etc/mail/sendmail.mc
Add these lines for enabling features:
FEATURE(masquerade_envelope)dnl FEATURE(`genericstable')dnl GENERICS_DOMAIN(`localhost.localdomain')dnl
Then run:
make -C /etc/mail
It should compile all the files under the /etc/mail directory and updates the changes.
After that restart the sendmail service.
root@nerdplanet# service sendmail restart
That's it, you have configured sendmail to act as a smarthost.
Configuring Your SMTP Server To accept mails from Smarthosts:
------------------------------------------------------------------------
NOTE: This procedure is applicable only if the remote live smtp server is a sendmail server, which is true in this scenario. For other SMTP servers refer to their documentation.
Presumptions: The live SMTP server is already using FEATURE ('access_db'..
Edit the access file in the live smtp server to accept mails from the smart host.
vi /etc/mail/access
connect:10.1.1.50 RELAY
cd /etc/mail
Rebuild the Access database file.
/usr/sbin/makemap hash access < access
Restart the sendmail service.
root@smtp# service sendmail restart
That's it; the remote smtp server will accept mails from the smarthost.
Hope This Tutorial is useful to someone. Please leave your comments.
Original Link: This tutorial is also available on http://www.nerdplanet.co.uk.
Cheers!
Mohan.