Postfix-SMTP-AUTH-TLS-Howto

Postfix-SMTP-AUTH-TLS-Howto

版本1.0
作者:Falko Timme

本文档介绍了如何安装基于能够进行SMTP-AUTH和TLS的Postfix的邮件服务器。 所有* nix操作系统都应该工作(或许有关于路径等的轻微变化)。 到目前为止,我在Debian Woody和Fedora Core 1上进行了测试。

这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。

本文档不附带任何形式的保证!


1获取来源

我们需要以下软件:openssl,cyrus-sasl2,postfix和postfix的TLS补丁。 我们将从/ tmp目录安装软件。

cd / tmp
wget http://www.openssl.org/source/openssl-0.9.7c.tar.gz
wget --passive-ftp ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.17.tar.gz
wget --passive-ftp ftp://ftp.aet.tu-cottbus.de/pub/postfix_tls/related/postfix/postfix-2.0.16.tar.gz
wget --passive-ftp ftp://ftp.aet.tu-cottbus.de/pub/postfix_tls/pfixtls-0.8.16-2.0.16-0.9.7b.tar.gz


2安装Openssl

tar xvfz openssl-0.9.7c.tar.gz
cd openssl-0.9.7c
./config
使
安装


3安装Cyrus-sasl

cd / tmp
tar xvfz cyrus-sasl-2.1.17.tar.gz
cd cyrus-sasl-2.1.17
./configure --enable-anon --enable-plain --enable-login --disable-krb4 --with-saslauthd = / var / run / saslauthd --with-pam --with-openssl = / usr / local / ssl --with-plugindir = / usr / local / lib / sasl2 --enable-cram --enable-digest --enable-otp (1行!)
使
安装

如果 / usr / lib / sasl2 存在:
mv / usr / lib / sasl2 / usr / lib / sasl2_orig

ln -s / usr / local / lib / sasl2 / usr / lib / sasl2

创建文件/usr/local/lib/sasl2/smtpd.conf

# This sets smtpd to authenticate using the saslauthd daemon.
pwcheck_method:saslauthd
# This allows only plain, login, cram-md5 and digest-md5 as the authentication mechanisms.
mech_list: plain login cram-md5 digest-md5


4安装Postfix

cd / tmp
tar xvfz pfixtls-0.8.16-2.0.16-0.9.7b.tar.gz
tar xvfz postfix-2.0.16.tar.gz
cd postfix-2.0.16
useraddPostfix
groupadd postdrop
patch -p1 <../pfixtls-0.8.16-2.0.16-0.9.7b/pfixtls.diff
make makefiles CCARGS =“ - DHAS_SSL -DUSE_SASL_AUTH -I / usr / local / include / sasl -I / usr / local / ssl / include”AUXLIBS =“ - L / usr / local / ssl / lib -L ​​/ usr / local / lib -R / usr / local / lib -lsasl2 -lssl -lcrypto“ (1行!)
使
make install (接受默认值)

cp / etc / postfix / aliases / etc /
newaliases

创建 /etc/init.d/postfix

#!/bin/bash
#
# postfix        This script controls the postfix daemon.
#

# description: Postfix MTA
# processname: postfix

case "$1" in
    start)
        /usr/sbin/postfix start
    ;;
    stop)
        /usr/sbin/postfix stop
    ;;
    reload)
        /usr/sbin/postfix reload
    ;;
    restart)
        $0 stop
        $0 start
    ;;
    *)
    echo "Usage: $0 {start|stop|reload|restart}"
    exit 1
esac
exit 0


chmod 755 /etc/init.d/postfix

为了在启动时启动postfix ,请执行以下操作:

ln -s /etc/init.d/postfix /etc/rc2.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc3.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc4.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc5.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc0.d/K20postfix
ln -s /etc/init.d/postfix /etc/rc1.d/K20postfix
ln -s /etc/init.d/postfix /etc/rc6.d/K20postfix

我们的postfix将在/ var / spool / postfix中运行chroot,所以我们必须复制几个文件:

mkdir -p / var / spool / postfix / etc
cd /等
cp localtime服务主机resolv.conf / var / spool / postfix / etc /
mkdir -p / var / spool / postfix / var / run
mv -f / var / run / saslauthd / / var / spool / postfix / var / run /
chmod 755 / var / spool / postfix / var / run / saslauthd /
ln -s / var / spool / postfix / var / run / saslauthd / / var / run / saslauthd

现在我们必须生成TLS所需的证书文件:

mkdir / etc / postfix / ssl
cd / etc / postfix / ssl /

如果 / usr / bin / openssl 存在:

mv / usr / bin / openssl / usr / bin / openssl _orig

ln -s / usr / local / ssl / bin / openssl / usr / bin / openssl
openssl genrsa -des3 -rand / etc / hosts -out smtpd.key 1024

< - 输入smtpd.key的密码。

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

- 再次输入smtpd.key的密码。
< - 输入您的国家名称(例如,“DE”)。
< - 输入您的州或省名称。
< - 进入你的城市。
< - 输入您的组织名称(例如,您公司的名称)。
< - 输入您的组织单位名称(例如“IT部门”)。
< - 输入系统的完全限定域名(例如“server1.example.com”)。
< - 输入您的电子邮件地址。

以下信息是可选的:

< - 输入挑战密码。
- 输入可选的公司名称。

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

- 再次输入smtpd.key的密码。

openssl rsa -in smtpd.key -out smtpd.key.unencrypted

- 再次输入smtpd.key的密码。

mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

- 再次输入smtpd.key的密码。
< - 输入您的国家名称(例如,“DE”)。
< - 输入您的州或省名称。
< - 进入你的城市。
< - 输入您的组织名称(例如,您公司的名称)。
< - 输入您的组织单位名称(例如“IT部门”)。
< - 输入系统的完全限定域名(例如“server1.example.com”)。
< - 输入您的电子邮件地址。

编辑/etc/postfix/main.cf以启用SMTP-AUTH和TLS:

postconf -e'mydomain = example.com'
postconf -e'myhostname = server1。$ mydomain'
postconf -e'smtpd_sasl_local_domain ='
postconf -e'smtpd_sasl_auth_enable = yes'
postconf -e'smtpd_sasl_security_options = noanonymous'
postconf -e'broken_sasl_auth_clients = yes'
postconf -e'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,check_relay_domains'
postconf -e'inet_interfaces = all'
postconf -e'alias_maps = hash:/ etc / aliases'
postconf -e'smtpd_tls_auth_only = no'
postconf -e'smtp_use_tls = yes'
postconf -e'smtpd_use_tls = yes'
postconf -e'smtp_tls_note_starttls_offer = yes'
postconf -e'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e'smtpd_tls_loglevel = 1'
postconf -e'smtpd_tls_received_header = yes'
postconf -e'smtpd_tls_session_cache_timeout = 3600s'
postconf -e'tls_random_source = dev:/ dev / urandom'


5配置Saslauthd

创建/etc/init.d/saslauthd

#!/bin/sh -e

NAME=saslauthd
DAEMON="/usr/sbin/${NAME}"
DESC="SASL Authentication Daemon"
DEFAULTS=/etc/default/saslauthd

test -f "${DAEMON}" || exit 0

# Source defaults file; edit that file to configure this script.
if [ -e "${DEFAULTS}" ]; then
    . "${DEFAULTS}"
fi

# If we're not to start the daemon, simply exit
if [ "${START}" != "yes" ]; then
    exit 0
fi

# If we have no mechanisms defined
if [ "x${MECHANISMS}" = "x" ]; then
    echo "You need to configure ${DEFAULTS} with mechanisms to be used"
    exit 0
fi

# Add our mechanimsms with the necessary flag
for i in ${MECHANISMS}; do
    PARAMS="${PARAMS} -a ${i}"
done

# Consider our options
case "${1}" in
  start)
        echo -n "Starting ${DESC}: "
        ln -fs /var/spool/postfix/var/run/${NAME} /var/run/${NAME}
        ${DAEMON} ${PARAMS}
        echo "${NAME}."
        ;;
  stop)
        echo -n "Stopping ${DESC}: "
        PROCS=`ps aux | grep -iw '/usr/sbin/saslauthd' | grep -v 'grep' |awk '{print $2}' | tr '\n' ' '`
        if [ "x${PROCS}" != "x" ]; then        
          kill -15 ${PROCS} &> /dev/null
        fi
        echo "${NAME}."
        ;;
  restart|force-reload)
        $0 stop
        sleep 1
        $0 start
        echo "${NAME}."
        ;;
  *)
        echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0


chmod 755 /etc/init.d/saslauthd

为了在引导时启动saslauthd ,请执行以下操作:

ln -s /etc/init.d/saslauthd /etc/rc2.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc3.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc4.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc5.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc0.d/K20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc1.d/K20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc6.d/K20saslauthd

然后创建/ etc / default / saslauthd

# This needs to be uncommented before saslauthd will be run automatically
START=yes

# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb"
MECHANISMS=shadow

如果您发现saslauthd位于/ usr / local / sbin而不是/ usr / sbin中,则创建一个符号链接:

ln -s / usr / local / sbin / saslauthd / usr / sbin / saslauthd

然后启动saslauthdpostfix

/etc/init.d/saslauthd开始

/etc/init.d/postfix start


6测试您的配置

要查看SMTP-AUTH和TLS是否正常运行,请运行以下命令:

telnet localhost 25

建立与您的postfix邮件服务器类型的连接后

ehlo本地主机

如果你看到这些行

250-STARTTLS

250-AUTH

一切安好。

类型

放弃

返回系统的shell。


有关此主题的更多(Debian特定)信息,请访问: http : //www.projektfarm.com/en/support/debian_setup/index.html


链接

Postfix MTA: http : //www.postfix.org/

OpenSSL: http : //www.openssl.org/

Cyrus-SASL: http : //asg.web.cmu.edu/sasl/

Postfix / TLS: http : //www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/


赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏