一、邮件服务依赖于DNS服务,所以先配置一个DNS服务器(我的地址是10.0.146.18)
1.修改主机名 # hostname mail.fsy.com # vim /etc/hostname 修改为:mail.fsy.com 2.安装bind并修改其配置文件 # yum -y install bind # vim /etc/named.conf 去掉options中的: listen-on port 53 { 127.0.0.1; }; allow-query { localhost; }; 3.配置正向区域和反向区域,并测试有无语法错误 # vim /etc/named.rfc1912.zones 添加: zone "fsy.com" IN { type master; file "fsy.com.zone"; allow-update { none; }; allow-transfer { none; }; }; zone "146.0.10.in-addr.arpa" IN { type master; file "10.0.146.zone"; allow-update { none; }; allow-transfer { none; }; }; # named-checkconf(测试有无语法错误) 4.编辑正向和反向区域文件 # cd /var/named/ # vim fsy.com.zone(编辑正向区域文件) 添加以下内容: $TTL 86400 @ IN SOA ns.fsy.com. admin.fsy.com. ( 2016092501 2H 10M 3D 1D) IN NS ns IN MX 10 mail ns IN A 10.0.146.18 mail IN A 10.0.146.18 www IN A 10.0.146.18 # vim 10.0.146.zone(编辑反向区域文件) 添加以下内容: $TTL 86400 @ IN SOA ns.fsy.com. admin.fsy.com. ( 2016092501 2H 10M 3D 1D) IN NS ns.fsy.com. 18 IN PTR ns.fsy.com. 18 IN PTR mail.fsy.com. 5.修改区域配置文件的属组和权限,并测试有无语法错误 # chgrp named fsy.com.zone 10.0.146.zone # chmod 640 fsy.com.zone 10.0.146.zone # named-checkzone "fsy.com" fsy.com.zone # named-checkzone "146.0.10.in-addr.arpa" 10.0.146.zone 6.重启DNS服务,使其开机自动启动,并测试 注意:请先更改本机的DNS服务器 # vim /etc/resolv.conf nameserver 10.0.146.18 # service named restart # chkconfig named on # dig -t MX fsy.com @10.0.146.18 # dig -t A mail.fsy.com @10.0.146.18 一切正常!
二、想要实现基于mysql的虚拟用户,所以先安装mysql(这里用rpm包安装)
# yum install mysql-server mysql-devel # service mysqld start # chkconfig mysqld on 三、编译安装postfix,(我这里用 postfix-2.10.10.tar.gz,相关软件包可以到postfix官网下载)
注意:首先同步一下时间,取得和硬件时间一致的时间 # hwclock -s 1.解压 # tar xf postfix-2.10.10.tar.gz # cd postfix-2.10.10 2.建立postfix和postdrop组和用户 # groupadd -g 2525 postfix # useradd -g postfix -u 2525 -s /sbin/nologin -Mpostfix # groupadd -g 2526 postdrop # useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop 3.安装所需软件包 # yum -y install cyrus-sasl-devel # yum -y install gcc # yum install db*-devel 4.安装 #make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto' 释义: CCARGS:指明头文件位置,CCARGS=-DHAS_MYSQL 指明启用mysql的连接能 -I/usr/include/mysql 指明mysql的头文件位置 -DUSE_SASL_AUTH启用SASL认证 -I/usr/include/sasl指明SASL头文件位置 -DUSE_TLS使SMTP支持smtps协议 AUXLIBS:指明库文件位置,-L/usr/lib/mysql 指明MySQL库文件位置 -lmysqlclient指明MySQL客户端库文件 -lz压缩库文件 -lm模块库文件 -lsslssl的库文件 # make # make install 按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值,省略的表示采用默认值)
install_root: [/] / tempdir: [/root/postfix-2.10.10] /root/postfix-2.10.10 config_directory: [] /etc/postfix command_directory: [] /usr/sbin daemon_directory: [] /usr/libexec/postfix data_directory: [] /var/lib/postfix html_directory: [] no mail_owner: [] postfix mailq_path: [] /usr/bin/mailq.postfix manpage_directory: [] /usr/share/man newaliases_path: []/usr/bin/newaliases.postfix queue_directory: [] /var/spool/postfix readme_directory: [] /usr/share/doc/postfix-2.6.6/README_FILES sendmail_path: [] /usr/sbin/sendmail.postfix setgid_group: [] postdrop 5、生成aliases.db文件 # newaliases # ls /etc/aliases.db 6、修改配置文件 # cd /etc/postfix/ # vim main.cf mynetworks = 192.168.182.0/24, 127.0.0.0/8(定义给哪些网段中继邮件) myhostname = mail.fsy.com(定义主机名) myorigin = $mydomain mydomain = fsy.com mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, ns.$mydomain inet_interfaces = all监听的ip地址 说明: mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问 myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名; myorigin参数用来指明发件人所在的域名,即做发件地址伪装; mydomain 参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值; mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;
5.现在即可启动测试了(此处可能遇到服务无法启动,看日志) # service postfix restart 此时可使用本地用户测试邮件收发了 四、安装dovecot,实现收邮件
1.安装: # yum -y install dovecot 2.修改配置文件 # vim /etc/dovecot/dovecot.conf ,修改以下内容 protocols = pop3 imap lmtp login_trusted_networks = 0.0.0.0/0 # cd /etc/dovecot/conf.d # vim 10-auth.conf 修改如下内容 disable_plaintext_auth = yes # vim 10-ssl.conf修改如下内容 ssl = no # vim 10-mail.conf修改以下内容 mail_location = mbox:~/mail:INBOX=/var/mail/%u mbox_write_locks = fcntl 3.创建用户,并且在用户家目录下创建mail/.imap/INBOX mkdir -p mail/.imap/INBOX 4.启动服务,并将其添加至服务列表中 # service dovecot start # chkconfig dovecot on 5.可以测试使用了 如:# telnet mail.fsy.com 110 Trying 10.0.146.18... Connected to mail.fsy.com. Escape character is '^]'. +OK Dovecot ready. user openstack +OK pass 123456 +OK Logged in. LIST +OK 5 messages: 1 283 2 276 3 278 4 278 5 281 . retr 2
五、配置SASL (此时我的系统上有一个用户hadoop,密码为:123456)
1.、编辑配置文件 # vim /etc/sysconfig/saslauthd MECH=shadow 2、启动sasl服务,并使其开机自动启动 # service saslauthd start # chkconfig saslauthd on saslauthd -v: 显示当前主机saslauthd服务所支持的认证机制,默认为pam 3、测试命令进行测试 # testsaslauthd -u hadoop -p 123456 4、说明基于哪种方式实现认证 # vim /usr/lib/sasl2/smtpd.conf 添加如下内容: pwcheck_method: saslauthd mech_list: PLAIN LOGIN 5、重启sasl服务,使其读取smtpd.conf这一配置文件 # service saslauthd restart 6、测试是否支持SASL # postconf -a 其中出现:cyrus,表明支持SASL 7、编辑postfix的配置文件,添加以下内容 # 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_sasl_path = smtpd smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available! 释义: broken_sasl_auth_clients = yes是否启用客户端sasl验证 smtpd_recipient_restrictions= permit_mynetworks允许本地网络 permit_sasl_authenticated允许sasl验证通过的用户 reject_invalid_hostname拒绝主机名不合法的用户 reject_non_fqdn_hostname拒绝主机名不是fqdn格式的用户 reject_unknown_sender_domain拒绝无法识别的发件人域 reject_non_fqdn_sender拒绝不是fqdn格式的发件人 reject_non_fqdn_recipient拒绝没有fqdn格式的发件人 reject_unknown_recipient_domain拒绝无法识别的收件人域 reject_unauth_pipelining拒绝无法验证的管道 reject_unauth_destination拒绝非本域的收件人 smtpd_sasl_auth_enable = yes启用sasl认证功能 smtpd_sasl_local_domain = $myhostname本地主机不用认证 smtpd_sasl_security_options = noanonymous不主持匿名用户 smtpd_sasl_path = smtpdsmtpd要使用sasl功能 smtpd_banner =显示欢迎信息
为了显示效果,修改如下 mynetworks = 127.0.0.0/8 7、重启服务,可以测试! [iyunv@mail ~]# service postfix restart 8、注意:用户认证需要生成需要将用户名和密码转换为base64 [iyunv@mail ~]# echo -n "hadoop" | openssl base64 [iyunv@mail ~]# echo -n "123456" | openssl base64
测试:
测试结果: [iyunv@mail ~]# telnet localhost 25 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 Welcome to our mail.fsy.com ESMTP,Warning: Version not Available! auth login 334 VXNlcm5hbWU6 aGFkb29w 334 UGFzc3dvcmQ6 MTIzNDU2 235 2.7.0 Authentication successful mail from:hadoop@fsy.com 250 2.1.0 Ok rcpt to:hello@aol.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> hello hao are you . 250 2.0.0 Ok: queued as 76B841FDE5 quit 221 2.0.0 Bye Connection closed by foreign host.
|