Home Network Email Configuration

One application that is use more than any other on the internet is email. Even though there are more web servers than email servers, I am told the amount of email far exceeds the number of web pages serverd.

Now most of us have email accounts with our ISPs (Internet Service Providers), but with a little work we can run our own email server inside our firewall.

OK, the first question would be “Why would I want to run my own email server?” Lets take a look at the plusses and minuses of running our server. After looking at the alternatives it will be easier to decide to whether we want our own server.

Plusses:

  • By handling our own email server we can have as many email addresses as we want. This becomes more valuable if we are handling the email for a family not just an individual.
  • If we are the email server we can do our own spam filtering to suit ourselves. This allows to customize the filter to what ever we want.
  • If we are the email host, we can ensure that no executable programs are emailed to anyone on our network. Many viruses are transmitted using email these days.
  • By serving the email ourselves we can backup and archive the email on the server instead of the individual computers. The simplifies the backup of email.
  • The size of you mail box is only limited by the amount of hard disk space you choose to dedicate to email.
  • If you have children, you can restrict the type of email they get. Yes I am talking censorship, but as a parent you should probably be doing this anyway.

Minuses:

  • We need to assure that email is received and distributed locally instead of leaving it to the ISP.
  • You can not read your email from a computer any where on the internet, assuming your ISP provides a web interface to your email. You have to setup and maintain the email configurations.

Sendmail

Configuring sendmail used to be one of the most feared tasks. The reason for this is that sendmail has a long list of options and configurations which needed a good working knowledge of regular expressions. That situation has changed due to two changes. First Sendmail can now use configuration files written in the M4 macro language. If you don’t know M4 don’t worry. The second change is that many Linux distributions come with Send mail configuration file ready for use in most setups.

Lets have a look at an M4 configuration file for Sendmail. Here is the file /etc/mail/sendmail.mc which comes with Redhat 7.3

    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
    include(`/usr/share/sendmail-cf/m4/cf.m4')
    VERSIONID(`linux setup for Red Hat Linux')dnl
    OSTYPE(`linux')
    dnl Uncomment and edit the following line if your mail needs to be sent out
    dnl through an external mail server:
    dnl define(`SMART_HOST',`smtp.your.provider')
    define(`confDEF_USER_ID',``8:12'')dnl
    undefine(`UUCP_RELAY')dnl
    undefine(`BITNET_RELAY')dnl
    define(`confAUTO_REBUILD')dnl
    define(`confTO_CONNECT', `1m')dnl
    define(`confTRY_NULL_MX_LIST',true)dnl
    define(`confDONT_PROBE_INTERFACES',true)dnl
    define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
    define(`ALIAS_FILE', `/etc/aliases')dnl
    dnl define(`STATUS_FILE', `/etc/mail/statistics')dnl
    define(`UUCP_MAILER_MAX', `2000000')dnl
    define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
    define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
    define(`confAUTH_OPTIONS', `A')dnl
    dnl TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    dnl define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    dnl define(`confTO_QUEUEWARN', `4h')dnl
    dnl define(`confTO_QUEUERETURN', `5d')dnl
    dnl define(`confQUEUE_LA', `12')dnl
    dnl define(`confREFUSE_LA', `18')dnl
    dnl FEATURE(delay_checks)dnl
    FEATURE(`no_default_msa',`dnl')dnl
    FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
    FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
    FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
    FEATURE(redirect)dnl
    FEATURE(always_add_domain)dnl
    FEATURE(use_cw_file)dnl
    FEATURE(use_ct_file)dnl
    dnl The '-t' option will retry delivery if e.g. the user runs over his quota.
    FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
    FEATURE(`access_db',`hash -o /etc/mail/access.db')dnl
    FEATURE(`blacklist_recipients')dnl
    EXPOSED_USER(`root')dnl
    dnl This changes sendmail to only listen on the loopback device 127.0.0.1
    dnl and not on any other network devices. Comment this out if you want
    dnl to accept email over the network.
    DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
    dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires
    dnl       a kernel patch
    dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')
    dnl We strongly recommend to comment this one out if you want to protect
    dnl yourself from spam. However, the laptop and users on computers that do
    dnl not have 24x7 DNS do need this.
    FEATURE(`accept_unresolvable_domains')dnl
    dnl FEATURE(`relay_based_on_MX')dnl
    MAILER(smtp)dnl
    MAILER(procmail)dnl
    Cwlocalhost.localdomain

First lets point out a couple of elements in the file to make things easier.

  • Lines beginning “dnl” are comments. If you want to comment out a line, place dnl at the beginning of the line.
  • Lines beginning “include” are included macros.
  • Lines beginning “define” and “undefine” configure variables.
  • Lines beginning “FEATURE” are directives to configure a function.

At the beginning is an explaination of how to recompile this file to create a new configuration file for sendmail. The configuration file used by the running copy of Sendmail is /etc/sendmail.cf

Let me list the changes I made to the above file to get working with my internet provider Cloud9.net

Once I have finished the configuration, I use the command

    m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

To compile the file M4 file into a configuration file. I then restart sendmail with the command:

    service sendmail restart


Written by John F. Moore

Last Revised: Wed Oct 18 11:01:34 EDT 2017

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
HTML5 Powered with CSS3 / Styling, and Semantics