设为首页 收藏本站
查看: 627|回复: 0

[经验分享] RedHat 5.4+ Postfix +Extmail实现基于虚拟用户的邮件系统(二)

[复制链接]

尚未签到

发表于 2018-5-12 08:41:54 | 显示全部楼层 |阅读模式
十、编辑配置文件
[root@mail ~]# cp /etc/postfix/main.cf /etc/postfix/main.cfbak   #备份
[root@mail ~]# vim /etc/postfix/main.cf
75 #myhostname = host.domain.tld
修改
75 myhostname = mail.postfix.org #本机名

83 #mydomain = domain.tld   
修改:
83 mydomain = postfix.org         #域名

99 #myorigin = $mydomain
修改为
99 myorigin = $mydomain

113 #inet_interfaces = all
修改为
113 inet_interfaces = all

161 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
修改为
161 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

260 #mynetworks = 168.100.189.0/28, 127.0.0.0/8
修改为
260 mynetworks = 127.0.0.0/8    #提供邮件转发功能的网段

:wq

[root@mail ~]# service postfix restart

说明:
myhostname = mail.postfix.org    指定运行postfix邮件系统的主机名
myorigin = postfix.org     当发件人的信息不详细时,使用这个默认域
mydomain = $mydomain 指定域名,默认情况下postfixmyhostname的第一部分删除而作为mydomain的值
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain    指定发往哪里的邮件postfix服务器负责接收
mynetworks = 127.0.0.0/8  指定postfix为哪些网段的用户进行邮件中继
inet_interfaces = all

注意:
1)在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
2)任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
3)每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix
4)如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;


十一、为postfix开启基于cyrus-sasl的认证功能
   添加此功能之后,当用户需要向外域发送邮件的话POSTFIX启用Cyrus-SASL函数库,来启动saslauthd程序,到存放用户帐号密码的地方进行认证,如果认证成功,则允许发送出去
1、使用以下命令验正postfix是否支持cyrus风格的sasl认证
postconf  -a
如果您的输出为以下结果,则是支持的:
[root@mail ~]# postconf -a
cyrus
dovecot

2、编辑postfix的主配置文件
[root@mail ~]# vim /etc/postfix/main.cf
最后添加以下内容:
############################CYRUS-SASL############################
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_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_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!


3、文件
[root@mail ~]# cd /usr/lib/sasl2
[root@mail sasl2]# cp -p sendmail.conf smtpd.conf
[root@mail sasl2]# cp smtpd.conf smtpd.confbak    #备份
[root@mail sasl2]# vim smtpd.conf
添加如下内容:
pwcheck_method: saslauthd
mech_list:PLAIN LOGIN


启动saslauthd认证服务,并将其加入到自动启动队列:
[root@mail sasl2]# service saslauthd start
[root@mail sasl2]# chkconfig saslauthd on

4、让postfix重新加载配置文件
[root@mail sasl2]# postfix reload

5、验证是否成功启用saslauthd服务
[root@mail sasl2]# telnet mail.postfix.org 25
Trying 172.16.1.254...
Connected to mail.postfix.org (172.16.1.254).
Escape character is '^]'.
220 Welcome to our mail.postfix.org ESMTP,Warning: Version not Available!
EHLO mail.postfix.org
250-mail.postfix.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN       *有这两行输出信息则
250-AUTH=LOGIN PLAIN       -表示此功能成功启用
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.


十二、安装Courier authentication library
安装Courier authentication library是让postfix能够和mysql数据库连接,将用户的帐号和密码放在数据库中,以便能够提供用户认证
1、编译、安装Courier authentication library
[root@mail ~]# tar -jxvf courier-authlib-0.63.0.tar.bz2 -C /usr/local/src/
[root@mail ~]# cd /usr/local/src/
[root@mail src]# cd courier-authlib-0.63.0/
[root@mail courier-authlib-0.63.0]# ./configure --prefix=/usr/local/courier-authlib --sysconfdir=/etc --with-authmysql --with-mysql-libs=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql --with-redhat --with-authmysqlrc=/etc/authmysqlrc --with-authdaemonrc=/etc/authdaemonrc --with-ltdl-lib=/usr/lib --with-ltdl-include=/usr/include
[root@mail courier-authlib-0.63.0]# make
[root@mail courier-authlib-0.63.0]# make install
[root@mail courier-authlib-0.63.0]# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
[root@mail courier-authlib-0.63.0]# cp /etc/authdaemonrc.dist  /etc/authdaemonrc
[root@mail courier-authlib-0.63.0]# cp /etc/authmysqlrc.dist  /etc/authmysqlrc  

2、修改/etc/authdaemonrc 文件
[root@mail courier-authlib-0.63.0]# cp /etc/authdaemonrc /etc/authdaemonrcbak  #备份
[root@mail courier-authlib-0.63.0]# vim /etc/authdaemonrc
27 authmodulelist="authuserdb authpwd authshadow authmysql authcustom authpipe"
修改为
27 authmodulelist="authmysql"

34 authmodulelistorig="authuserdb authpwd authshadow authmysql authcustom authpipe"
修改为
34 authmodulelistorig="authmysql"

53 daemons=5
修改为
53 daemons=10

:wq

3、编辑/etc/authmysqlrc 对应项需改结果如下
[root@mail courier-authlib-0.63.0]# cp /etc/authmysqlrc /etc/authmysqlrcbak  #备份
[root@mail courier-authlib-0.63.0]# vim /etc/authmysqlrc
26 MYSQL_SERVER            mysql.example.com
修改为
26 MYSQL_SERVER            localhost

27 MYSQL_USERNAME          admin
修改为
27 MYSQL_USERNAME          extmail     #指定后文要用的数据库的所有者的用户名

28 MYSQL_PASSWORD          admin
修改为
28 MYSQL_PASSWORD          extmail     #指定后文要用的数据库的所有者的密码

49 # MYSQL_SOCKET          /var/mysql/mysql.sock
修改为
49 MYSQL_SOCKET            /var/lib/mysql/mysql.sock

56 MYSQL_PORT              0
修改为
56 MYSQL_PORT              3306    #指定你的mysql监听的端口,这里使用默认的3306

68 MYSQL_DATABASE          mysql
修改为
68 MYSQL_DATABASE          extmail

83 MYSQL_USER_TABLE        passwd
修改为
83 MYSQL_USER_TABLE        mailbox

92 MYSQL_CRYPT_PWFIELD     crypt
修改为
92 MYSQL_CRYPT_PWFIELD     password

113 MYSQL_UID_FIELD         uid
修改为
113 MYSQL_UID_FIELD         2525

119 MYSQL_GID_FIELD         gid
修改为
119 MYSQL_GID_FIELD         2525

128 MYSQL_LOGIN_FIELD       id
修改为
128 MYSQL_LOGIN_FIELD       username

133 MYSQL_HOME_FIELD        home
修改为
133 MYSQL_HOME_FIELD        concat('/var/mailbox/',homedir)

150 # MYSQL_MAILDIR_FIELD   maildir
修改为
150 # MYSQL_MAILDIR_FIELD   concat('/var/mailbox/',maildir)

:wq

创建此服务加入系统服务列表
[root@mail courier-authlib-0.63.0]# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
[root@mail courier-authlib-0.63.0]# chmod 755 /etc/init.d/courier-authlib  
[root@mail courier-authlib-0.63.0]# service courier-authlib restart
Stopping Courier authentication services: authdaemond
Starting Courier authentication services: authdaemond
[root@mail courier-authlib-0.63.0]# chkconfig --add courier-authlib
[root@mail courier-authlib-0.63.0]# chkconfig --level 2345 courier-authlib on

[root@mail courier-authlib-0.63.0]# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf
[root@mail courier-authlib-0.63.0]# ldconfig -v   #重新加载库文件

4、新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户
[root@mail courier-authlib-0.63.0]# mkdir –pv /var/mailbox
[root@mail courier-authlib-0.63.0]# chown -R postfix /var/mailbox
[root@mail courier-authlib-0.63.0]# ll /var/mail
lrwxrwxrwx 1 root root 10 Dec 18 17:06 /var/mail -> spool/mail
[root@mail courier-authlib-0.63.0]# ll -d /var/mailbox     
drwxr-xr-x 2 postfix root 4096 Dec 24 14:27 /var/mailbox

5、重新配置SMTP 认证
[root@mail courier-authlib-0.63.0]# vim /usr/lib/sasl2/smtpd.conf
注释两行内容:
#pwcheck_method: saslauthd
#mech_list:PLAIN LOGIN
添加以下内容:
mech_liseck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket:PLAIN LOGIN

:wq

十三、让postfix支持虚拟域和虚拟用户
1、编辑postfix主配置文件
[root@mail courier-authlib-0.63.0]# vim /etc/postfix/main.cf
在最后添加以下内容:
########################Virtual Mailbox Settings########################
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1

##########################QUOTA Settings########################
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
virtual_overquota_bounce = yes

:wq

2、使用extman源码目录下docs目录中的extmail.sqlinit.sql建立数据库
[root@mail ~]# tar -zxvf extman-1.1.tar.gz -C /usr/local/src/
[root@mail ~]# cd /usr/local/src/
[root@mail src]# cd extman-1.1/
[root@mail extman-1.1]# cd docs/
[root@mail docs]# mysql -u root -p <extmail.sql
Enter password:  输入数据库密码:redhat
[root@mail docs]# mysql -u root -p <init.sql
Enter password: 输入数据库管理员密码:redhat
[root@mail docs]# mysql -u root -p
Enter password: 输入数据库管理员密码:redhat
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| extmail            |   建立成功
| mysql             |
| test               |
+--------------------+
4 rows in set (0.02 sec)

mysql> use extmail;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-------------------+
| Tables_in_extmail |
+-------------------+
| alias            |
| domain          |
| domain_manager  |
| mailbox          |
| manager         |
+-------------------+
5 rows in set (0.00 sec)

mysql> \q
Bye

[root@mail docs]# cp mysql*  /etc/postfix/

3、授予用户extmail访问extmail数据库的权限
[root@mail docs]# mysql -u root -p
Enter password: 输入数据库管理员密码:redhat
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@mail docs]# mysql -u root -p
Enter password: 输入数据库管理员密码:redhat
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> GRANT all privileges on extmail.* TO extmail@localhost IDENTIFIED BY 'extmail';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT all privileges on extmail.* TO extmail@127.0.0.1 IDENTIFIED BY 'extmail';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> \q
Bye
[root@mail docs]# service postfix restart


                                                                        上一页|下一页

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-458942-1-1.html 上篇帖子: RedHat 5.4+ Postfix +Extmail实现基于虚拟用户的邮件系统(一) 下篇帖子: RSA \envision Redhat linux Apache tomcat日志收集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表