postfix-企业邮件服务器搭建完整版

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postfix-企业邮件服务器搭建完整版相关的知识,希望对你有一定的参考价值。

声明:本文为个人原创,引用请申明出处。此文在百度文库等地方上传过。百度文库ID:denhuaibo!此文最早上传于2014年。

附件提供文档下载。

postfix邮件服务器安装配置文档

 

 

 

 

 

 

目录

简介... 2

构建运行环境... 2

安装配置postfix. 5

在客户端发送邮件... 7

另一种认证更简单... 11

在客户端接收邮件... 12

邮件传输加密... 13

邮件病毒扫描... 14

广告邮件的抵挡... 19

邮件监控... 20

 

 

 

 

 

 

 

 

 

 

 

 

简介

这是一个集成项目,请仔细阅读本文档后再操作。遇到问题时请耐心检查配置和日志文件,本文档中如果没有列出相关解决方法请到网上寻求帮助吧!

本文档旨在让大家明白postfix和其它程序之间的关系,如何让他们协同工作。每种软件提供的功能,所完成何种任务。本文档不详细介绍postfix,具体详细的postfix参数和优化请参阅《POSTFIX权威指南》

这里以redhat6.4系统为例进行安装,其它系统可以根据实际情况对命令进行相应调整,配置方式不变。

redhat中默认安装了sendmail的需要先使用rpm 命令安装完postfix后卸载掉sendmail,也可以不卸载使用chkconfig sendmail off命令禁止其启动。

在此使用的是一个完整的架构,其中会用到非常多的软件,所以在进行此实验之前需要一定的linux系统基础知识才能保证成功率。

会用到的软件有:

apache 提供网页后台管理功能,可使用nginx或者其它相关程序代替。

php   postfixadmin组件提供浏览,因为postfix admin是使用php编写的网页

mysql  提供用户认证和虚拟邮件路径等数据信息

postfix 主邮件系统,提供邮件管理

postfix admin 提供邮件网页管理功能,是一个使用php编写的网页。可使用extmail代替。

cyrus-sasl  提供smtp发送邮件认证功能

pam_mysql  提供pammysql认证,与cyrus-sasl协同工作。可使用courier-authlib代替

dovecot  提供收件服务功能

Amavisd-new 邮件系统和杀毒软件之间的中介程序,负责调用杀毒软件对邮件进行病毒扫描

Clamav  一个开源的杀毒软件,另外一个比较好的是f-prot但是要收费。

总共有10个软件协同工作来构建出一套实用安全的邮件系统。以下内容是本人在部署完整个系统后发现在整个过程中费了很多的时间和经历,所以想想还是把它写下来贡献给大家学习参考。由于是事后回忆,当初也没有做笔记,所以很多在过程中遇到的错误没有记录下来实在是一个遗憾。希望大家引以为鉴,在平时工作和学习当中一定要做好笔记,特别是错误的处理过程。这里只能通过日志内容回忆一下处理的全过程供大家参考了。下面如无特殊说明,所使用的rpm包均在安装光盘中能直接找到

构建运行环境

为了方便后续操作,在安装之前有必要进行yum源的配置,然后通过光盘进行安装是比较方便的事情。所以下面从光盘安装的rpm包都使用yum命令操作,当然也可以使用rpm命令,看个人喜好了.

1apachephp安装

yum install httpd  安装apache程序

php安装:

虽然安装光盘中有phprpm包,但是只能提供一般的功能,postfixadmin中会用到两个功能是rpm包无法提供的,所以必须下载源码编译安装。否则打开网页配置时会出现如下错误,提示缺少mbstringimap组件。

  • Error: Depends on:     multibyte string - NOT FOUND
        To install multibyte string support, install php5-mbstring

  • Warning: Depends on: IMAP     functions - NOT FOUND
        To install IMAP support, install php5-imap
        Without IMAP support, you won‘t be able to create subfolders when creating     mailboxes.

 

可以到http://www.php.net/ 官网下载php的源代码,这里使用的是php-5.5.5.tar.gz当前最新版本。使用tar -zxf php-5.5.5.tar.gz解压然后编译,下面是编译的.configure选项

./configure --prefix=/usr/local/php5.5 --enable-bcmath  --enable-mbstring  --enable-sockets  --enable-zip --with-apxs2=/usr/sbin/apxs --with-libxml-dir --with-gd --with-mysql--with-mysql-sock --with-jpeg-dir --with-freetype-dir --with-gettext--with-imap --with-imap-ssl --with-kerberos

程序运行的过程中可能会出现错误,无法继续的可能。下面列出一些来:

./configure: line 8423: /usr/sbin/apxs: No such file ordirectory  请安装httpd-devel组件

configure: error: xml2-config not found  请安装libxml2-devel

configure: error: jpeglib.h not found 请安装libjpeg-turbo-devel

configure: error:png.h not found 请安装 libpng-devel

configure: error: freetype.h not found. 请安装 freetype-devel

error: utf8_mime2text() has new signature 需要安装libc-clientlibc-client-devel 可到rpmfind.net上下载

configure: error: Kerberos libraries not found. 请安装krb5-devel

configure: error: Cannot find OpenSSL‘s <evp.h>  请安装openssl-devel

其它错误,请自行网上查找答案。

如果通过,你会看到Thank you for using PHP.的这么一行,当然不一定显示在最后。

看到这个就表示成功很近了,使用make编译,然后make install安装。

默认安装完以后使用servicehttpd start就可以启动了,不需要什么配置。

可以在/var/www/html/下写一个php的测试页。

vi/var/www/html/index.php内容为:

<?php

 phpinfo();

?>

然后保存,使用浏览器输入服务器的ip地址就能看到一片php的信息。当然如果高端一点的可以使用源码进行安装,其中配置过程就比较麻烦一点。具体方式可以参考网上的文档,这里不细说。

如果php网页无法执行,只能看到文件内容请检查httpd.conf文件中是否有一下内容:

LoadModulephp5_module modules/libphp5.so

AddHandlerphp5-script .php

AddTypetext/html .php

2mysql安装配置:

   同样使用yum installmysql-server 进行安装,当然数据库就比较麻烦一点。

安装完成后使用mysql_install_db命令对数据库进行初始化,接下来就可以启动数据库了。service mysqld start 启动

/usr/bin/mysqladmin-u root password “newpassword” 修改数据库密码,然后使用service mysqld restart重新启动一次,使用mysql -u root -p 输入上面的密码后登录数据库测试是否能正常使用。

3postfixadmin安装

下载位置http://sourceforge.net/projects/postfixadmin/files/postfixadmin/目前使用的是2.3.6版本。

删除/var/www/html/index.php之前的测试文件,然后把postfixadmin-2.3.6.tar.gz解压到此处。

postfix单独创建一个数据库和帐号,是比较明智的选择,便于管理和备份。

mysql -u root -p

输入密码登录数据库

mysql> createdatabase postfix character set utf8; 创建数据库

mysql> grantall privileges on postfix.* to [email protected] identified by ‘youpassword‘;

vi/var/www/html/config.inc.php修改内容

$CONF[‘configured‘]= true; 打开配置功能

$CONF[‘database_type‘]= ‘mysql‘;  设置网页数据库类型

$CONF[‘database_host‘]= ‘localhost‘; 数据库主机地址

$CONF[‘database_user‘]= ‘postfix‘;  数据库账户

$CONF[‘database_password‘]= ‘postfix‘; 数据库密码

$CONF[‘database_name‘]= ‘postfix‘; 数据库名字

修改完后保存

在浏览器中输入http://192.168.4.11/setup.php如果正常就能看到

技术分享

输入一个密码点下面的按钮,会有提示要求再次编辑config.inc.php 文件输入

技术分享

修改好以后在第一项输入刚才设置的密码,第二项为管理员email地址如[email protected]下面输入设置的密码。然后点按钮提交,这样就算设置完了。

首先新建一个域:

技术分享

然后可以新建邮箱:

技术分享

注意用户名和名字需要一模一样,否则可能会导致后面无法登录验证。具体原因不知道,如果你们明白怎么回事情,还希望发送邮件给我谢谢! denwork#qq.com#改成@

建立还邮箱地址以后还是不能发送邮件,因为没有邮件服务程序。

安装配置postfix

配置好yum源,然后通过光盘进行安装是比较方便的事情。其实redhat系统在安装完成以后就已经安装完成了。yum install postfix进行安装

主要的配置文件:

/etc/postfix/main.cf  postfix的打部分设置都在此文件中,后面会多次用到这个文件

/etc/postfix/master.cf  该文件规定了postfix每个程序的运行参数,后面也会使用到

编辑main.cf文件这里只列出修改的内容

 

myhostname =mail.test.com   输入本机的计算机名

mydestination = 因为要在下面设置virtual_mailbox_domains所以这里需要留空

mydomain = test.com    输入域名

inet_interfaces= all  运行的接口

mynetworks =192.168.4.11/32,127.0.0.1/32 设置信任的客户端地址

注释:设置虚拟邮件目录(下面的内容一样在main.cf里面)

virtual_mailbox_base= /var/mailbox   设置虚拟邮件目录

virtual_mailbox_maps= mysql:/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf 定义邮件结构,使用到的表是mailbox。里面保存了用户名密码,用户邮件的路径等。

virtual_mailbox_domains= mysql:/etc/postfix/mysql/mysql_virtual_domains_maps.cf定义邮件域名。里面记录了邮件服务器可以服务的域名,可以为很多域名提供邮件服务。

virtual_alias_maps= mysql:/etc/postfix/mysql/mysql_virtual_alias_maps.cf  定义邮件别名,比如每个部门有一个名字对应了整个部门所有的员工邮件地址。

virtual_minimum_uid= 48 因为是网页上面对其进行操作,所以这里的uidgid需要是apahce的用户id,可以在/etc/passwd文件中查看,或者使用id apache命令查看。

virtual_uid_maps= static:48 同上

virtual_gid_maps= static:48 同上

virtual_transport= virtual 传输类型当然是virtual

message_size_limit= 41720000  允许发送的最大邮件大小,注意这里不是附件而是整个邮件的大小。单位为Byte

mailbox_size_limit= 209715200  定义邮件可以使用的空间

virtual_mailbox_limit= 209715200 定义虚拟邮件可以使用的空间

virtual_create_maildirsize= yes

virtual_mailbox_extended= yes

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql/mysql_virtual_mailbox_limit_maps.cf用来定义设置邮箱容量,有了上面的两个项可以不使用。

virtual_mailbox_limit_override= yes

virtual_maildir_limit_message= Sorry, the user’s maildir has overdrawn his disspace quota, please try againlater.

virtual_overquota_bounce= yes

==============================main.cf=========================================

上面main.cf文件中还有几个cf的文件,如

mysql:/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf意思是需要在/etc/postfix/mysql 目录下创建mysql_virtual_mailbox_maps.cf的文件,下面就给出这几个文件的内容。

/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf

user = postfix  填写数据库账户

password = postfix 数据库密码

hosts = localhost  数据库地址

dbname = postfix  数据库名

table = mailbox   使用的表

select_field = maildir  关键字

where_field = username 条件

上面的动作完成使用账户密码等内容登录数据库,然后执行use postfix; select maildir from mailbox where username=”[email protected]”;得到的结果是这个邮件用户保存邮件的相对main.cf配置文件中virtual_mailbox_base = /var/mailbox选项设置的路径加上查询的结果。比如邮件名为[email protected]的用户邮件路径为/var/mailbox/[email protected]/。告诉postfix程序保存邮件的具体位置,下面其它类似文件的作用也是如此。就不做一一讲解了。

mysql_virtual_domains_maps.cf内容:

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = domain

select_field = domain

where_field = domain

mysql_virtual_alias_maps.cf内容:

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = alias

select_field = goto

where_field = address

mysql_virtual_mailbox_limit_maps.cf内容:

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = mailbox

select_field = quota

where_field = username

=================================关于数据库的设置文件完========================

还需要对master.cf文件进行设置,上面就写过这个文件是对postfix的各个程序进行控制,所以后面的收发文件、病毒查杀等程序都是在这个文件中设置。添加一行:

smtps    inet  n       -      n       -       -      smtpd

 

到这里postfix基本就可以搭配postfixadmin进行收发邮件了。但是这尽限于本机,还无法像其它客户端一样通过网页或者outlook等客户端进行收发邮件。

postfix进行测试,使用service postfix start命令启动程序。这里需要注意,就算显示OK也需要查看一下/var/log/maillog文件中是否有错误。否则还是会不成功的。

telnet 127.0.0.1 25可以测试postfix是否正常。

输入ehlo local

mail from:[email protected]

rcpt to:[email protected]

data

   “输入邮件内容”

  . 输入一个点结束编辑

250 2.0.0 Ok: queued as 2AE65203D6 出现类似内容代表邮件已经发出了。

在客户端发送邮件

经过上面的设置后,就可以发送邮件了。如果要达到使用foxmail或者outlook客户端进行邮件的收发还需要进行下一步配置,就是登录邮件服务器的验证。

启用stmpd程序的认证,这个认证的目的是可以使用客户端登录邮件服务器发送邮件,如果需要收邮件还需要另外一个程序。

常常使用saslauthd来进行程序认证,需要安装如下rpm包:

cyrus-sasl-libcyrus-sasl-develcyrus-sasl-plaincyrus-sasl-md5cyrus-sasl

编辑/etc/sasl2/smtpd.conf配置文件:

pwcheck_method:saslauthd 认证程序

log_level: 3 日志级别

mech_list: plainlogin 提供的认证类型

saslauthd_path:/var/run/saslauthd/mux 执行程序的socket文件默认为此位置

这里更正一下网上的内容,很多网站上面写的都是一样的,各个网站互相复制内容。导致结果全是错误的根本无法提供验证。后来找到一个方法,就是使用pam_mysql模块为sasl程序提供pam的验证功能达到验证的目的。

下载pam_mysql源代码。http://download.chinaunix.net/download/0008000/7820.shtml在网上找到的链接,只能保证暂时有效。大家可以去网上搜索。我目前找到的最高版本pam_mysql-0.7RC1.tar.gz

使用如下命令进行编译安装。

./configure--with-openssl=/usr/include/openssl/ --with-mysql=/usr  --with-pam=/usr  --with-cyrus-sasl=/usr/include/sasl/

在配置程序运行的过程中会提示没有pam的头文件,需要安装pam-develmysql-devel

其中由于需要md5支持,需要把/usr/include/openssl/md5.h文件拷贝到/usr/include/md5.h下才能编译成功。如果没有这个文件需要安装openssl-devel

然后make &&make install 编译并安装

把编译好的模块cp/usr/lib/security/pam_mysql.* /lib/security/目录下

编辑PAM模块,让smtp程序能调用pam进行mysql数据库认证,使用vi 打开/etc/pam.d/smtp.postfix删除原来的两项内容,添加以下两项内容:

auth sufficientpam_mysql.so user=postfix passwd=postfix host=localhost db=postfixtable=mailbox usercolumn=name passwdcolumn=password crypt=1 4

account  required pam_mysql.so  user=postfix  passwd=postfix  host=localhost  db=postfix table=mailbox usercolumn=name passwdcolumn=password crypt=1 4

以上参数的解释和其它参数请查看程序编译目录的README文件。

除了上面的配置以外还需要在/etc/postfix/main.cf配置文件中添加以下内容:

broken_sasl_auth_clients= yes 启用sasl登录认证

smtpd_recipient_restrictions=

        permit_mynetworks 允许mynetworks选项中的主机

        permit_sasl_authenticated 允许通过sasl_authenticated认证的主机

        reject_invalid_hostname  拒绝未知主机名

        reject_unknown_sender_domain 拒绝未知的发送域名

        reject_non_fqdn_sender  

        reject_non_fqdn_recipient

        reject_unknown_recipient_domain

        reject_unauth_pipelining

        reject_unauth_destination

这里设置允许和拒绝的内容。其它未说明或者没有设置的内容可去网上查看其用法,其选项还有很多。

smtpd_sasl_auth_enable= yes

smtpd_sasl_path= smtpd

smtpd_sasl_local_domain= $myhostname

smtpd_sasl_security_options= noanonymous

smtpd_banner =Welcome to our $myhostname ESMTP,Warning: Version Available!

 

 

调试方法:

配置好上面的配置文件以后重新启动postfix,使用telnet127.0.0.1 25进行调试,以下是调试内容:

[[email protected]]# telnet 127.0.0.1 25

Trying127.0.0.1...

Connected to127.0.0.1.

Escape characteris ‘^]‘.

220 Welcome toour localhost.localdomain ESMTP,Warning: Version Available!  这里显示的内容是上面main.cfsmtpd_banner= Welcome to our $myhostname ESMTP,Warning: Version Available!的信息。

ehlo local 查看服务器支持的信息。

250-localhost.localdomain

250-PIPELINING

250-SIZE41720000

250-VRFY

250-ETRN

250-AUTH PLAINLOGIN

250-AUTH=PLAINLOGIN   显示这两项说明支持plain login认证

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

auth login  使用login认证方式

334 VXNlcm5hbWU6  提示输入用户名

dGVzdEB0ZXN0LmNvbQ==

334 UGFzc3dvcmQ6  提示输入密码

cmVkaGF0

235 2.7.0 Authenticationsuccessful  出现这个表示认证成功。

上面输入的密码是通过命令编码后的内容,在shell命令行中输入printf  ”[email protected]” | openssl base 64,然后就能看到了,密码也是如此。同时可以在日志里面查看认证过程,涉及到的日志文件有/var/log/maillog, /var/log/message, /var/log/secure, 如果其中的内容都不能判断是什么错误的话,那么请启用mysql的详细日志。进入mysql 使用show variables like "%general_log%";语句进行查看,如果|general_log      | OFF,那么set globalgeneral_log=1;语句开启,并在上一条语句中查看到的路径中文件的位置进行查看。然后再此执行认证过程,看是否mysql参与了认证过程。我在安装的时候就忘记把pam文件中原来的两行注释,造成没有通过mysql认证所以导致日志文件中总是提示认证失败没有别的错误提示。

在实际应用过程中会发现,当你使用A用户登录后以B用户的名义来寄信这也是可以的。所以必须杜绝这种情况发生。设置防止伪造发信人:

main.cf中添加

smtpd_sender_login_maps=

mysql:/etc/postfix/mysql/mysql_sender_login_maps.cf,mysql:/etc/postfix/mysql/mysql_virtual_alias_maps.cf

smtpd_reject_unlisted_sender= yes

smtpd_sender_restrictions= reject_authenticated_sender_login_mismatch

smtpd_recipient_restrictions=

        reject_sender_login_mismatch

       reject_authenticated_sender_login_mismatch

修改后的smtpd_recipient_restrictions=

        permit_mynetworks

        reject_invalid_hostname

        reject_unknown_sender_domain

        reject_sender_login_mismatch

       reject_authenticated_sender_login_mismatch

                   permit_sasl_authenticated

        reject_non_fqdn_sender

        reject_non_fqdn_recipient

        reject_unknown_recipient_domain

        reject_unauth_pipelining

        reject_unauth_destination

#       reject_non_fqdn_hostname

注意这个列表的顺序,否则可能出问题。

数据库文件配置:

mysql_sender_login_maps.cf

user = postfix 

password = ps.test.com

hosts =localhost

dbname = postfix

table = mailbox

select_field =username

where_field =username

mysql_virtual_alias_maps.cf

user = postfix

password = ps.test.com

hosts =localhost

dbname = postfix

table = alias

select_field =goto

where_field =address

additional_conditions= AND active=‘1‘

配置完后重启postfix服务,再进行测试。使用A账户和密码登录,指定发件人为B <from:B邮箱地址>如果以上配置成功会出现如下类似错误:

postfix/smtpd[10220]:NOQUEUE: reject: RCPT from unknown[112.193.145.100]: 553 5.7.1 <[email protected]>:Sender address rejected: not owned by user [email protected]; from=< [email protected]> to=< [email protected]> proto=ESMTP helo=<CV0024762TO>

另一种认证更简单

smtp.conf配置

 

pwcheck_method:authdaemond

log_level: 3

mech_list: plainlogin

srp_mda: md5

password_format:crypt

authdaemond_path:/usr/local/courier-auth/var/spool/authdaemon/socket

 

 

courier-authlib安装

./configure--sysconfdir=/etc --prefix=/usr/local/courier-auth--with-authmysqlrc=/etc/authlib/authmysqlrc--with-mysql-libs=/usr/lib/mysql/ --with-mysql-includes=/usr/include/mysql/

configure期间如果提示LibTool  ltdl库文件没找到就需要安装libtool-ltdl-devel这个软件包。

makeinstall-configure配置文件可以使用这个命令来生成

按照上面的配置安装完成后,所有的配置文件都在/etc/authlib下面。

配置authdaemonrc文件告诉程序使用mysql模块认证。

authmodulelist="authmysql"

authmodulelistorig="authmysql"

只需要修改这两项就行了。

authmysqlrc文件

 

MYSQL_SERVER            localhost  

MYSQL_USERNAME          postfix

MYSQL_PASSWORD          postfix

MYSQL_SOCKET            /var/lib/mysql/mysql.sock

MYSQL_PORT              3306

MYSQL_DATABASE          postfix 数据库名称

MYSQL_USER_TABLE        mailbox 数据库表名

MYSQL_CRYPT_PWFIELD     password 密码字段

DEFAULT_DOMAIN  test.com  服务器域名

MYSQL_UID_FIELD         89 postfix的账户ID

MYSQL_GID_FIELD         89 postfixID

MYSQL_LOGIN_FIELD       username 数据库表中带域名的字段

MYSQL_HOME_FIELD        ‘/var/mailbox/‘ 邮件存放位置,和main.cf文件中的一致

MYSQL_NAME_FIELD        name  用户名字段

MYSQL_MAILDIR_FIELD     maildir 邮件路径字段

MYSQL_WHERE_CLAUSE      active=‘1‘ 是否为激活状态

 

在编译目录下把courier-authlib.sysvinit文件复制到/etc/init.d目录下courier-authlib这样就可以使用service命令启动了。

 

 

排错:

 warning: SASL authentication failure: cannotconnect to Courier authdaemond: Permission denied

出现以上信息时,请检查/usr/local/courier-auth/var/spool/authdaemon目录的权限,请增加执行权限。

 warning: SASL authentication failure: cannotconnect to Courier authdaemond: No such file or directory

1、出现以上信息,请确认courier-authlib已经启动。

2authmysqlrcsmtp.conf文件中每行的结尾是否有空格。特别是authdaemond_path:/usr/local/courier-auth/var/spool/authdaemon/socket

3main.cf文件中smtpd_sasl_local_domain= 参数需要为空。

在客户端接收邮件

如果你通过了上面的配置,那么恭喜你。经过漫长的测试和配置过程,你的邮件服务器已经可以通过客户端发送邮件了,但是很遗憾的告诉你。到这里你也才刚刚完成了整个邮件系统建设的一半工作,只能发不能收算什么邮件系统。下面就来介绍如何使用客户端来接收别人发来的邮件。

这里使用到的软件是dovecot使用yum installdovecot进行安装,可以先查看一下包的文件结构,这样比较能知道配置文件等的位置。

首先打开/etc/dovecot/dovecot.conf,里面修改的内容有

base_dir =/var/run/dovecot/

protocol pop3

把这两行的注释去掉,

接下来是下级目录conf.d10-auth.conf配置认证方式

disable_plaintext_auth= no 支持明文传输

auth_mechanisms= plain login加上认证类型

#!includeauth-system.conf.ext 注释掉这行

!includeauth-sql.conf.ext  取消这样的注释。打开使用sql认证的功能

10-mail.conf配置mail的存放路径。

找到mail_location的行,添加mail_location= maildir:/var/mailbox/%[email protected]%d/ 这里只的是mail的目录为/var/mailbox/邮箱名@域名/

first_valid_uid= 48 uid为系统的apache用户ID,这里一定要修改正确否则也会认证不成功

20-pop3.conf配置去掉pop3_uidl_format的注释。

/etc/dovecot/下新建一个配置文件dovecot-sql.conf.ext,这个文件的位置取决于在conf.d目录下auth-sql.conf.ext配置文件中的路径。内容如下

driver =mysql

connect =host=localhost dbname=postfix user=postfix password=postfix 数据库的链接信息

default_pass_scheme= MD5 邮件密码加密方式

password_query =SELECT password, concat(‘/var/mailbox/‘,maildir) AS home, 48 AS uid, 48 AS gidFROM mailbox WHERE username = ‘%u‘

user_query =SELECT concat(‘/var/mailbox/‘,maildir) AS home, 48 AS uid, 48 AS gid FROMmailbox WHERE username = ‘%u‘

配置完成后就可以启动dovecot服务了。servicedovecot start

测试方式也可以使用telnet127.0.0.1 110

[[email protected]]# telnet 127.0.0.1 110

Trying127.0.0.1...

Connected to127.0.0.1.

Escape characteris ‘^]‘.

+OK Dovecot ready.

[email protected]

+OK

pass redhat

+OK Logged in.

list

+OK 3 messages:

1 2492

2 435

3 320

如果到这里就证明认证已经可以正常使用了,如果遇到无法认证可以到maillog文件中查看日志。

在配置dovecot时总会发现日志内容不够详细,可以通过下面选项打开程序的调试日志便于程序的排错。

# 显示协议层的SSL错误

verbose_ssl = yes

# 详细的认证过程信息记录

auth_verbose = yes

# 更详细的认证调试(debug)信息

auth_debug = no

邮件传输加密

以上配置中的,密码和内容都是在网络上明文传输的,所以非常的不安全。可以启用SSL加密方式进行认证。

smtp邮件发送的加密认证:

生成ssl证书文件:

make -C/etc/pki/tls/certs smtpd.pem

mv  /etc/pki/tls/certs/smtpd.pem  /etc/postfix/

在生成证书是会提示输入一些内容,按照提示输入即可。

打开/etc/postfix/main.cf文件,添加以下内容:

#=========================postfixssl config==================

smtp_use_tls =yes

smtpd_use_tls =yes

smtp_tls_note_starttls_offer= yes

smtpd_tls_key_file= /etc/postfix/smtpd.pem

smtpd_tls_cert_file= /etc/postfix/smtpd.pem

smtpd_tls_CAfile= /etc/postfix/smtpd.pem

smtpd_tls_loglevel= 1

smtpd_tls_received_header= yes

smtpd_tls_session_cache_timeout= 3600s

打开/etc/postfix/master.cf文件:

smtps     inet n       -       n      -       -       smtpd

前面已经添加过这一项了,不过还是请确认一下。默认配置里面会有多余的两个-o选项,还请不要配置。以上是关于postfix-企业邮件服务器搭建完整版的主要内容,如果未能解决你的问题,请参考以下文章

postfix邮件服务器搭建04-终结篇

Postfix邮件系统

linux 下 搭建邮件邮件服务器(Postfix+Dovecot)-基于mysql的虚拟账户登陆收发邮件

我的postfix过滤邮件群发邮件问题 跟某云平台的故事

Postfix邮件系统(+dovecat)

使用Postfix和Dovecot收发电子邮件