MyTetra Share
Делитесь знаниями!
Время создания: 03.08.2020 23:21
Автор: alensav
Текстовые метки: Postfix
Раздел: MyTetra - Ubuntu_Command
Запись: alensav/MyTetra2/main/base/1596486076i94tth3cti/text.html на raw.githubusercontent.com

P ostfix



Introduction


Содержание

  1. Introduction
  2. What is a Mail Transfer Agent
  3. Installation
  4. Configuration
  5. Authentication
  6. Testing
  7. Troubleshooting
    1. Remove Postfix from chroot
    2. Configuring saslauthd to Default
  8. Using Port 587 for Secure Submission
  9. Other Postfix Guides
  1. Postfix Basic Setup
  2. Postfix Virtual Mailbox and Antivirus Filtering
  3. Postfix Setup For Sender Policy Framework (SPF) Checking
  4. Postfix Setup For DKIM email signing and verification
  5. Add Dspam to Postfix
  6. Postfix Complete Solution
  7. Dovecot LDAP
  8. Dovecot SASL

Postfix is the default Mail Transfer Agent (MTA) for Ubuntu. It is in Ubuntu's main repository, which means that it receives security updates. This guide explains how to install and configure postfix and set it up as an SMTP server using a secure connection.

What is a Mail Transfer Agent

In other words, it's a mail server not a mail client like Thunderbird, Evolution, Outlook, Eudora, or a web-based email service like Yahoo, GMail, Hotmail, Earthlink, Comcast, SBCGlobal.net, ATT.net etc.... If you worked for a company named Acme and owned acme.com, you could provide your employees with email addresses @acme.com. Employees could send and receive email through your computer, but not without your computer running all the time. If all your email addresses are at a domain (@gmail.com, @yahoo.com) you do not own (you don't own Google) or do not host (acme.com) then you do not need this at all.

Installation

In order to install Postfix with SMTP-AUTH and TLS, first install the postfix package from the Main repository using your favorite package manager. For example:

sudo apt-get install postfix

Simply accept the defaults when the installation process asks questions. The configuration will be done in greater detail in the next stage.

Configuration

From a terminal prompt:

sudo dpkg-reconfigure postfix

Insert the following details when asked (replacing server1.example.com with your domain name if you have one):

  • General type of mail configuration: Internet Site
  • NONE doesn't appear to be requested in current config
  • System mail name: example.com
  • Root and postmaster mail recipient: <admin_user_name>
  • Other destinations for mail: server1.example.com, example.com, localhost.example.com, localhost
  • Force synchronous updates on mail queue?: No
  • Local networks: 127.0.0.0/8
  • Yes doesn't appear to be requested in current config
  • Mailbox size limit (bytes): 0
  • Local address extension character: +
  • Internet protocols to use: all

Now is a good time to decide which mailbox format you want to use. By default Postifx will use mbox for the mailbox format. Rather than editing the configuration file directly, you can use the postconf command to configure all postfix parameters. The configuration parameters will be stored in /etc/postfix/main.cf file. Later if you wish to re-configure a particular parameter, you can either run the command or change it manually in the file.

To configure the mailbox format for Maildir:

sudo postconf -e 'home_mailbox = Maildir/'

You may need to issue this as well:

sudo postconf -e 'mailbox_command ='

Note: This will place new mail in /home/username/Maildir so you will need to configure your Mail Delivery Agent to use the same path.

Configure Postfix to do SMTP AUTH using SASL (saslauthd):

sudo postconf -e 'smtpd_sasl_local_domain ='

sudo postconf -e 'smtpd_sasl_auth_enable = yes'

sudo postconf -e 'smtpd_sasl_security_options = noanonymous'

sudo postconf -e 'broken_sasl_auth_clients = yes'

sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

sudo postconf -e 'inet_interfaces = all'

Next edit /etc/postfix/sasl/smtpd.conf and add the following lines:

pwcheck_method: saslauthd

mech_list: plain login

Generate certificates to be used for TLS encryption and/or certificate Authentication:

touch smtpd.key

chmod 600 smtpd.key

openssl genrsa 1024 > smtpd.key

openssl req -new -key smtpd.key -x509 -days 3650 -out smtpd.crt # has prompts

openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 # has prompts

sudo mv smtpd.key /etc/ssl/private/

sudo mv smtpd.crt /etc/ssl/certs/

sudo mv cakey.pem /etc/ssl/private/

sudo mv cacert.pem /etc/ssl/certs/

Configure Postfix to do TLS encryption for both incoming and outgoing mail:

sudo postconf -e 'smtp_tls_security_level = may'

sudo postconf -e 'smtpd_tls_security_level = may'

sudo postconf -e 'smtpd_tls_auth_only = no'

sudo postconf -e 'smtp_tls_note_starttls_offer = yes'

sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'

sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'

sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'

sudo postconf -e 'smtpd_tls_loglevel = 1'

sudo postconf -e 'smtpd_tls_received_header = yes'

sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'

sudo postconf -e 'tls_random_source = dev:/dev/urandom'

sudo postconf -e 'myhostname = server1.example.com' # remember to change this to yours

The file /etc/postfix/main.cf should now look like this:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)

biff = no


# appending .domain is the MUA's job.

append_dot_mydomain = no


# Uncomment the next line to generate "delayed mail" warnings

#delay_warning_time = 4h


myhostname = server1.example.com

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

myorigin = /etc/mailname

mydestination = server1.example.com, example.com, localhost.example.com, localhost

relayhost =

mynetworks = 127.0.0.0/8

mailbox_command = procmail -a "$EXTENSION"

mailbox_size_limit = 0

recipient_delimiter = +

inet_interfaces = all

smtpd_sasl_local_domain =

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

broken_sasl_auth_clients = yes

smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

smtpd_tls_auth_only = no

#Use these on Postfix 2.2.x only

#smtp_use_tls = yes

#smtpd_use_tls = yes

#For Postfix 2.3 or above use:

smtp_tls_security_level = may

smtpd_tls_security_level = may

smtp_tls_note_starttls_offer = yes

smtpd_tls_key_file = /etc/ssl/private/smtpd.key

smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt

smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem

smtpd_tls_loglevel = 1

smtpd_tls_received_header = yes

smtpd_tls_session_cache_timeout = 3600s

tls_random_source = dev:/dev/urandom

Restart the postfix daemon like this:

sudo /etc/init.d/postfix restart

Authentication

The next steps are to configure Postfix to use SASL for SMTP AUTH.

First you will need to install the libsasl2-2, sasl2-bin and libsasl2-modules from the Main repository [i.e. sudo apt-get install them all].

Note: if you are using Ubuntu 6.06 (Dapper Drake) the package name is libsasl2.

We have to change a few things to make it work properly. Because Postfix runs chrooted in /var/spool/postfix we have to change a couple of paths to live in the false root. (ie. /var/run/saslauthd becomes /var/spool/postfix/var/run/saslauthd):


Note: by changing the saslauthd path other applications that use saslauthd may be affected.

First, we edit /etc/default/saslauthd in order to activate saslauthd. Remove # in front of START=yes, add the PWDIR, PARAMS, and PIDFILE lines and edit the OPTIONS line at the end:

# This needs to be uncommented before saslauthd will be run automatically

START=yes


PWDIR="/var/spool/postfix/var/run/saslauthd"

PARAMS="-m ${PWDIR}"

PIDFILE="${PWDIR}/saslauthd.pid"


# You must specify the authentication mechanisms you wish to use.

# This defaults to "pam" for PAM support, but may also include

# "shadow" or "sasldb", like this:

# MECHANISMS="pam shadow"


MECHANISMS="pam"


# Other options (default: -c)

# See the saslauthd man page for information about these options.

#

# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"

# Note: See /usr/share/doc/sasl2-bin/README.Debian

#OPTIONS="-c"


#make sure you set the options here otherwise it ignores params above and will not work

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

Note: If you prefer, you can use "shadow" instead of "pam". This will use MD5 hashed password transfer and is perfectly secure. The username and password needed to authenticate will be those of the users on the system you are using on the server.

Next, we update the dpkg "state" of /var/spool/postfix/var/run/saslauthd. The saslauthd init script uses this setting to create the missing directory with the appropriate permissions and ownership:

sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

This may report an error that "--update given" and the "/var/spool/postfix/var/run/saslauthd" directory does not exist. You can ignore this because when you start saslauthd next it will be created.

Update by dominique-ramaekers: On 14.04.2 LTS, Trusty Tahr, I needed to create a symbolic link from /etc/default/saslauthd to /etc/. On starting the service I got this error: "saslauthd[14117] :main : no authentication mechanism specified". Aparantly, the saslauthd looks for the config file /etc/saslauthd and not for /etc/default/saslauthd. The link fixes this issue.

sudo ln -s /etc/default/saslauthd /etc/saslauthd

Finally, start saslauthd:

sudo /etc/init.d/saslauthd start

Testing

To see if SMTP-AUTH and TLS work properly now run the following command:

telnet localhost 25

After you have established the connection to your postfix mail server type

ehlo localhost

If you see the lines

250-STARTTLS

250-AUTH

among others, everything is working.

Type quit to return to the system's shell.

Troubleshooting

Remove Postfix from chroot

If you run into issues while running Postfix you may be asked to remove Postfix from chroot to better diagnose the problem. In order to do that you will need to edit /etc/postfix/master.cf locate the following line:

smtp inet n - - - - smtpd

and modify it as follows:

smtp inet n - n - - smtpd

Then restart Postfix:

sudo /etc/init.d/postfix restart

Configuring saslauthd to Default

If you don't want to run Postfix in a chroot, or you'd like to not use chroot for troubleshooting purposes you will probably also want to return saslauthd back to its default configuration.

The first step in accomplishing this is to edit /etc/default/saslauthd comment the following lines we added above:

#PWDIR="/var/spool/postfix/var/run/saslauthd"

#PARAMS="-m ${PWDIR}"

#PIDFILE="${PWDIR}/saslauthd.pid"

Then return the saslauthd dpkg "state" to its default location:

dpkg-statoverride --force --update --add root sasl 755 /var/run/saslauthd

And restart saslauthd:

sudo /etc/init.d/saslauthd restart

Using Port 587 for Secure Submission

If you want to use port 587 as the submission port for SMTP mail rather than 25 (many ISPs block port 25), you will need to edit /etc/postfix/master.cf and uncomment the line

submission inet n - n - - smtpd

Так же в этом разделе:
 
MyTetra Share v.0.64
Яндекс индекс цитирования