目标:在RHEL5系统架设简易邮件服务器,包括SMTP服务、POP3服务,发信支持SMTP验证。然后使用客户端(比如Foxmail,Outlook)连接,进行邮件收发。
【注意】
此文档的配置在我的RHEL5系统上能正确运行
【注意】 此文档的内容不一定说得正确,欢迎大家指正!小蜗牛十分感谢!
【注意】 此文档的内容不一定说得正确,欢迎大家指正!小蜗牛十分感谢!
===================================================
Sendmail 入门配置
===================================================
Sendmail 入门配置
===================================================
在这里不讲sendmail如何安装,只讲述简单的sendmail配置使用。大多数Linux系统在安装的时候,一般都默认安装了senmdail。我使用的RHEL5系统,已经安装的sendmail包如下:
[root@pps ~]# rpm -qa | grep sendmail
sendmail-8.13.8-2.el5
[root@pps ~]# rpm -qa | grep sendmail
sendmail-8.13.8-2.el5
1、启动、停止sendmail服务
大多数系统默认开机就启动sendmail服务了,我们可以查看sendmail服务状态,停止、启动sendmail:
[root@pps ~]# service sendmail status
sendmail (pid 3944 3935) 正在运行...
[root@pps ~]# service sendmail stop
关闭 sm-client: [确定]
关闭 sendmail: [确定]
[root@pps ~]# service sendmail start
启动 sendmail: [确定]
启动 sm-client: [确定]
[root@pps ~]# service sendmail status
sendmail (pid 3944 3935) 正在运行...
[root@pps ~]# service sendmail stop
关闭 sm-client: [确定]
关闭 sendmail: [确定]
[root@pps ~]# service sendmail start
启动 sendmail: [确定]
启动 sm-client: [确定]
【小贴士】--------------------------------------------------------------【小贴士】
可以telnet检查一下sendmail服务是否真的启动了:
[root@pps ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 pps.hoho.com ESMTP Sendmail 8.13.8/8.13.8; Sat, 14 Mar 2009 00:22:53 +0800
quit
221 2.0.0 pps.hoho.com closing connection
Connection closed by foreign host.
嘿嘿,说明senmail服务启动正常啦!可以看到sendmail的版本号是 8.13.8,我连接上后啥也没做,输入quit命令退出来了!
【小贴士】--------------------------------------------------------------【小贴士】
其实用telnet命令可以测试连接其它端口,检测端口是否打开(即提供服务),比如检测80或者8080等,如果端口打开了就会有信息返回提示,即使是连接被blocked的信息,否则就会出现连接被拒的情况(Connection refused)。
其实用telnet命令可以测试连接其它端口,检测端口是否打开(即提供服务),比如检测80或者8080等,如果端口打开了就会有信息返回提示,即使是连接被blocked的信息,否则就会出现连接被拒的情况(Connection refused)。
2、简单配置sendmail
当sendmail服务启动的时候,就可以使用mail工具给系统内别的用户发邮件(信息),或者给外界发邮件了,如果目标email系统不做什么反垃圾检查、IP过滤的话,一般能收到的。
(1)sendmail的主配置文件 /etc/mail/sendmail.cf
这个配置文件差不多有2000行,有点恐怖,不过我们需要做的修改并不多,先入门嘛。我修改的几个地方如下:
1)SMTP监听地址参数
# SMTP daemon options
# O DaemonPortOptions=Addr=127.0.0.1,Port=smtp,Name=MTA
O DaemonPortOptions=Port=smtp,Name=HoHo'MTA
# SMTP daemon options
# O DaemonPortOptions=Addr=127.0.0.1,Port=smtp,Name=MTA
O DaemonPortOptions=Port=smtp,Name=HoHo'MTA
这里我把Addr=127.0.0.1去掉,sendmail就监听系统的所有IP的smtp(25)端口,否则只监听127.0.0.1的25端口,系统外的客户端是无法连接到我的sendmail的,要么就再写上我们对外服务的局域网IP地址,如下:
O DaemonPortOptions=Addr=127.0.0.1,Addr=192.168.32.50,Port=smtp,Name=MTA
(有本事你就写上一个公网IP,哈哈)
O DaemonPortOptions=Addr=127.0.0.1,Addr=192.168.32.50,Port=smtp,Name=MTA
(有本事你就写上一个公网IP,哈哈)
2)设置本服务器主机名信息
Cwlocalhost
# file containing names of hosts for which we receive email
Fw/etc/mail/local-host-names
Cwlocalhost
# file containing names of hosts for which we receive email
Fw/etc/mail/local-host-names
Cw之后写明所有要收信的主机名,但是接下来Fw这一行说明可以从local-host-names文件读取所要收信的主机名,我可以这样:
Cwlocalhost hoho.com pps.hoho.com
或者在 local-host-names 文件里:
[root@pps mail]# cat /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
hoho.com
pps.hoho.com
Cwlocalhost hoho.com pps.hoho.com
或者在 local-host-names 文件里:
[root@pps mail]# cat /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
hoho.com
pps.hoho.com
(经测试,可以同时在Cw里和Fw里有相同的主机名,不过我认为这是无聊的做法)
现在我想发信给本机的hoho用户,发给
hoho@hoho.com 或者
hoho@pps.hoho.com 都可以。
【注意】如果本机还有其它别名,比如 bbs.hoho.com:
[root@pps mail]# nslookup bbs.hoho.com
Server: 127.0.0.1
Address: 127.0.0.1#53
[root@pps mail]# nslookup bbs.hoho.com
Server: 127.0.0.1
Address: 127.0.0.1#53
bbs.hoho.com
canonical name = pps.hoho.com.
Name: pps.hoho.com
Address: 192.168.32.50
Name: pps.hoho.com
Address: 192.168.32.50
那么如果在Cw或Fw里写上 pps.hoho.com 但是没有写上 bbs.hoho.com ,给
hoho@bbs.hoho.com发信也是可以的。
但是,如果 bbs.hoho.com 是独立的A记录,如下:
[root@pps mail]# nslookup bbs.hoho.com
Server: 127.0.0.1
Address: 127.0.0.1#53
[root@pps mail]# nslookup bbs.hoho.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: bbs.hoho.com
Address: 192.168.32.50
Address: 192.168.32.50
那么此时给
hoho@bbs.com.cn 发信将会有退信,说是“system config error, mail loops back to me (MX problem?)"。
【注意】如果此时 bbs.hoho.com 实际为局域网内另外一台主机(带有邮件服务),那么给
hoho@bbs.hoho.com 发信,本机就将信件relay到 bbs.hoho.com 主机,不会产生上述错误。
(2)sendmail的访问限制配置文件 /etc/mail/access
[root@pps mail]# cat access
# Check the /usr/share/doc/sendmail/README.cf file for a de.ion
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
# 这一行是我添加的
Connect:192.168.32 RELAY
编辑保存后,执行以下命令更新访问数据库:
[root@pps mail]# makemap hash access.db < access
[root@pps mail]# makemap hash access.db < access
这里配置允许本机和 192.168.32.0/24 网段的所有机器的访问,因此可以在本网段内的机器(假设是Windows XP)上使用Foxmail或者Outlook来设置smtp服务器为 192.168.32.50 来发送邮件。当然,防火墙需要允许外界对25端口的访问(防火墙的配置就不扯远了)。
【小贴士】--------------------------------------------------------------【小贴士】
access文件定义举例:
hoho.com RELAY //允许hoho.com域内用户发送
192.168.32 RELAY //允许192.168.32.0/24网段发送
hoho@163.com RELAY //允许特定邮件地址
snailwarrior@ RELAY //允许特定用户发送
hoho.com RELAY //允许hoho.com域内用户发送
192.168.32 RELAY //允许192.168.32.0/24网段发送
hoho@163.com RELAY //允许特定邮件地址
snailwarrior@ RELAY //允许特定用户发送
参数说明:
OK 无条件接受或发送
RELAY 允许SMTP代理投递
REJECT 拒绝接受并发送错误消息
DISCARD 丢弃邮件,不发送错误消息
(3)sendmail设置SMTP验证
【注意】如果做了SMTP验证,上述/etc/mail/access的限制还是起作用的,即使SMTP验证通过,但是在access里限制客户端不能访问,则客户端还是无法发信。
OK 无条件接受或发送
RELAY 允许SMTP代理投递
REJECT 拒绝接受并发送错误消息
DISCARD 丢弃邮件,不发送错误消息
(3)sendmail设置SMTP验证
【注意】如果做了SMTP验证,上述/etc/mail/access的限制还是起作用的,即使SMTP验证通过,但是在access里限制客户端不能访问,则客户端还是无法发信。
sendmail设置smtp验证需要cyrus-sasl包,我的RHEL5系统已安装的包如下:
[root@pps mail]# rpm -qa | grep sasl
cyrus-sasl-lib-2.1.22-4
cyrus-sasl-plain-2.1.22-4
cyrus-sasl-2.1.22-4
[root@pps mail]# rpm -qa | grep sasl
cyrus-sasl-lib-2.1.22-4
cyrus-sasl-plain-2.1.22-4
cyrus-sasl-2.1.22-4
【注意】如果是用源码包方式编译安装sendmail,如果需要支持SMTP验证,则需要先安装sasl(简单认证和安全层协议)。
sasl 认证方式有多种,我在这里介绍使用 /etc/shadow 来做用户密码验证,下面谈到的Qpopper做POP3服务器时也配置为用 /etc/shadow 来验证。
1)关注一下 /usr/lib/sasl2/Sendmail.conf
[root@pps ~]# cat /usr/lib/sasl2/Sendmail.conf
pwcheck_method:saslauthd
[root@pps ~]# cat /usr/lib/sasl2/Sendmail.conf
pwcheck_method:saslauthd
有资料说需要将 Sendmail.conf 复制一份,名为 smtpd.conf,但在我的RHEL5系统不需要这么做,也不需要修改其默认内容。
2)修改 /etc/mail/sendmail.mc,重新生成sendmail.cf
把以下两行前面的 dnl 去掉:
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
把以下两行前面的 dnl 去掉:
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
把这一行注释掉:
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
添加以下一行:
DAEMON_OPTIONS(`Port=smtp,Name=MSA, M=Ea')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
添加以下一行:
DAEMON_OPTIONS(`Port=smtp,Name=MSA, M=Ea')dnl
其实也有配置使用SMTP验证的一行(我们不动它,保持注释状态):
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
但这里的Port=submission,也即是在 587 端口上才使用SMTP验证,这不是我想要的,我需要在SMTP默认的25端口上使用SMTP验证,于是将 Port=submission 修改为 Port=smtp。
修改保存好sendmail.mc后,执行以下命令来生成新的 sendmail.cf 配置文件:
[root@pps mail]# m4 sendmail.mc > sendmail.cf
sendmail.mc:10: m4: cannot open `/usr/share/sendmail-cf/m4/cf.m4': No such file or directory
[root@pps mail]# m4 sendmail.mc > sendmail.cf
sendmail.mc:10: m4: cannot open `/usr/share/sendmail-cf/m4/cf.m4': No such file or directory
这是因为没有安装sendmai-cf这个包,安装了就OK了。
3)启动saslauthd服务
[root@pps ~]# service saslauthd start
[root@pps ~]# service saslauthd start
【注意】想要saslauthd开机时启动,RHEL5可以通过ntsysv配置来实现,或者通过在 /etc/rc.local 里添加 /etc/init.d/saslauthd start 一行。
4)重启sendmail
[root@pps ~]# service sendmail restart
[root@pps ~]# service sendmail restart
美丽的时刻,SMTP客户端连接就需要SMTP验证了!
【小贴士】--------------------------------------------------------------【小贴士】
使用Telnet检查SMTP验证是否生效了:
[root@pps mail]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 pps.hoho.com ESMTP Sendmail 8.13.8/8.13.8; Sun, 15 Mar 2009 14:47:10 +0800
ehlo localhost
250-pps.hoho.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-AUTH LOGIN PLAIN
250-DELIVERBY
250 HELP
quit
221 2.0.0 pps.hoho.com closing connection
Connection closed by foreign host.
使用Telnet检查SMTP验证是否生效了:
[root@pps mail]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 pps.hoho.com ESMTP Sendmail 8.13.8/8.13.8; Sun, 15 Mar 2009 14:47:10 +0800
ehlo localhost
250-pps.hoho.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-AUTH LOGIN PLAIN
250-DELIVERBY
250 HELP
quit
221 2.0.0 pps.hoho.com closing connection
Connection closed by foreign host.
可以看到 250-AUTH LOGIN PLAIN 说明SMTP验证生效了。
OutlookExpress、Foxmail使用LOGIN认证方式。
OutlookExpress、Foxmail使用LOGIN认证方式。
也可以通过以下命令检查sasl是否生效:
[root@pps mail]# sendmail -d0.1 -bv root | grep SASL
NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS
[root@pps mail]# sendmail -d0.1 -bv root | grep SASL
NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS
嘿嘿,可以看到我的 SASLv2 已经启用了。
(4)sendmail相关配置文件以及作用
/etc/mail/sendmail.cf Sendmail主配置文件
/etc/aliases Sendmail使用的别名文件(raw data)
/etc/mail/aliases.db 别名数据库(加快别名查找)
/etc/mail/helpfile 帮助文件
/var/log/mail/statistics 统计文件
/var/spool/mqueue/* 邮件队列临时文件
【举例1】
/etc/aliases 我可以通过这个文件实现“群发”
# 我在文件末尾添加自己想要群发的“用户群” allpeople
allpeople: mail_user_1,mail_user_2,mail_user_3,mail_user_4,mail_user_5
# 我在文件末尾添加自己想要群发的“用户群” allpeople
allpeople: mail_user_1,mail_user_2,mail_user_3,mail_user_4,mail_user_5
更新别名:
[root@pps etc]# newaliases 或者 sendmail -bi
[root@pps etc]# newaliases 或者 sendmail -bi
下面给
allpeople@hoho.com 发信,就相当于给上述5个邮件用户发信了!
allpeople就是一个邮件列表(maillist)!
allpeople就是一个邮件列表(maillist)!
【补充2】/var/log/maillog 这是sendmail的日志文件(其实也是下面说的POP3服务的日志文件)
root可以查看此文件检查邮件的投递情况。在这里也可以看到sendmail和下面讲述的POP3服务器Qpopper的启动相关信息。
root可以查看此文件检查邮件的投递情况。在这里也可以看到sendmail和下面讲述的POP3服务器Qpopper的启动相关信息。
[root@pps mail]# service sendmail restart
/var/log/maillog日志记录如下:
Mar 14 23:27:38 pps sendmail[20861]: alias database /etc/aliases rebuilt by root
Mar 14 23:27:38 pps sendmail[20861]: /etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total
Mar 14 23:27:39 pps sendmail[20866]: starting daemon (8.13.8): SMTP+queueing@01:00:00
Mar 14 23:27:40 pps sm-msp-queue[20877]: starting daemon (8.13.8): queueing@01:00:00
/var/log/maillog日志记录如下:
Mar 14 23:27:38 pps sendmail[20861]: alias database /etc/aliases rebuilt by root
Mar 14 23:27:38 pps sendmail[20861]: /etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total
Mar 14 23:27:39 pps sendmail[20866]: starting daemon (8.13.8): SMTP+queueing@01:00:00
Mar 14 23:27:40 pps sm-msp-queue[20877]: starting daemon (8.13.8): queueing@01:00:00
所有的邮件收发都在这里有记录,这里就不细说了。
===================================================
Qpopper 安装配置
===================================================
Qpopper 安装配置
===================================================
Qpopper是一个POP3服务器,它不支持SMTP等功能,只是和标准的UNIX邮件传输代理(MTA)比如sendmail、smail等一起工作。一般Linux安装的时候不自带qpopper,需要自己下载安装。(我没注意我使用的RHEL5光盘里是否有qpopper的rpm包)
下载当前最新的版本:qpopper4.0.16
[url]ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.16.tar.gz[/url]
[url]ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.16.tar.gz[/url]
下面的操作步骤参考Qpopper的手册GUIDE.pdf,但手册有很多地方“跟不上”时代了,下面根据自己RHEL5系统的实际情况说说我的安装配置。
【注意】/var/mail --> /var/spool/mail
【注意】需要防火墙开放110端口
1、安装步骤
[root@pps software]# tar zxf qpopper4.0.16.tar.gz
[root@pps software]# cd qppoper
[root@pps qpopper4.0.16]# ./configure --enable-standalone
[root@pps qpopper4.0.16]# make
[root@pps qpopper4.0.16]# make install
[root@pps software]# tar zxf qpopper4.0.16.tar.gz
[root@pps software]# cd qppoper
[root@pps qpopper4.0.16]# ./configure --enable-standalone
[root@pps qpopper4.0.16]# make
[root@pps qpopper4.0.16]# make install
popper安装在 /usr/local/sbin/popper
【注意】这里可执行程序名叫"popper",而不是"qpopper"
手册里介绍可以用inetd来启动qpopper,但目前比较新的系统都采用了xinetd了。我本人也不喜欢使用它们,就喜欢standalone模式。下面介绍如何使用standalone模式运行apopper,因此我在 configure 的时候加上 --enable-standalone 开关。
我实际使用的配置如下:
[root@pps qpopper4.0.16]# ./configure --enable-standalone --enable-specialauth --enable-log-login
[root@pps qpopper4.0.16]# ./configure --enable-standalone --enable-specialauth --enable-log-login
--enable-standalone 使用standalone模式
--enable-specialauth 使得支持RHEL5的用户密码shadow
--enable-log-login Qpopper记录成功登陆的认证。
--enable-specialauth 使得支持RHEL5的用户密码shadow
--enable-log-login Qpopper记录成功登陆的认证。
2、Qpopper的运行、停止
运行Qpopper,我实际使用的运行参数如下:
[root@pps qpopper4.0.16]# popper -c -C -R -s -T180
运行Qpopper,我实际使用的运行参数如下:
[root@pps qpopper4.0.16]# popper -c -C -R -s -T180
-c 将用户名大写变为小写,因此用户名可以大小写混合使用,结果都为小写
-C 如果用户名带有域名,-C选项将“@域名”去掉, hoho@hoho.com变为hoho
-R 禁用对客户端IP反向DNS查询
-s 在日志中记录统计数据
-T 设置客户端的读取超时时间,默认120秒
-C 如果用户名带有域名,-C选项将“@域名”去掉, hoho@hoho.com变为hoho
-R 禁用对客户端IP反向DNS查询
-s 在日志中记录统计数据
-T 设置客户端的读取超时时间,默认120秒
下面这个选项也比较有用,就是从文件读取运行选项,使用时请查看手册看看注意事项。
-f config-file 从config-file读取额外的run-time选项
-f config-file 从config-file读取额外的run-time选项
停止Qpopper:
[root@pps mail]# killall popper
[root@pps mail]# killall popper
/var/log/maillog日记里的停止、启动记录:
Mar 14 23:21:52 pps popper[14759]: popper: Server: cleaning up and exiting normally
Mar 14 23:25:02 pps popper[20740]: popper: Server: listening . 0.0.0.0:110
Mar 14 23:21:52 pps popper[14759]: popper: Server: cleaning up and exiting normally
Mar 14 23:25:02 pps popper[20740]: popper: Server: listening . 0.0.0.0:110
【提示】我在 /etc/rc.local 里添加一行 /usr/local/sbin/popper -c -C -R -s -T180 来设置开机自动启动POP3服务。
3、添加POP3用户(其实就是添加邮件用户)
参考了一下资料, 发现可以只添加邮件用户而实际上没有增加系统用户,以下命令不用理会警告信息:
[root@pps mail]# useradd mail_user_1 -g mail -d /dev/null -s /bin/false
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
参考了一下资料, 发现可以只添加邮件用户而实际上没有增加系统用户,以下命令不用理会警告信息:
[root@pps mail]# useradd mail_user_1 -g mail -d /dev/null -s /bin/false
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
因此,可以用shell脚本批量生成邮件用户,同时使用 chpasswd 命令来批量初始化用户的密码。示例如下:
(1)批量生成用户
先来看看mail用户的组别:
[root@pps ~]# cat /etc/passwd | grep mail
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
可见mail用户的GID为12
先来看看mail用户的组别:
[root@pps ~]# cat /etc/passwd | grep mail
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
可见mail用户的GID为12
新建mail_users.txt内容如下:
[root@pps ~]# cat mail_users.txt
mail_user_1:x::12::/dev/null:/sbin/nologin
mail_user_2:x::12::/dev/null:/sbin/nologin
mail_user_3:x::12::/dev/null:/sbin/nologin
mail_user_4:x::12::/dev/null:/sbin/nologin
mail_user_5:x::12::/dev/null:/sbin/nologin
【注意】必须严格按照/etc/passwd 的格式来书写
[root@pps ~]# cat mail_users.txt
mail_user_1:x::12::/dev/null:/sbin/nologin
mail_user_2:x::12::/dev/null:/sbin/nologin
mail_user_3:x::12::/dev/null:/sbin/nologin
mail_user_4:x::12::/dev/null:/sbin/nologin
mail_user_5:x::12::/dev/null:/sbin/nologin
【注意】必须严格按照/etc/passwd 的格式来书写
使用newusers命令来批量生成用户:
[root@pps ~]# newusers mail_users.txt
[root@pps ~]# newusers mail_users.txt
查看一下/etc/passwd用户添加情况:
[root@pps ~]# cat /etc/passwd
...
mail_user_1:x:65535:12::/dev/null:/sbin/nologin
mail_user_2:x:65536:12::/dev/null:/sbin/nologin
mail_user_3:x:65537:12::/dev/null:/sbin/nologin
mail_user_4:x:65538:12::/dev/null:/sbin/nologin
mail_user_5:x:65539:12::/dev/null:/sbin/nologin
[root@pps ~]# cat /etc/passwd
...
mail_user_1:x:65535:12::/dev/null:/sbin/nologin
mail_user_2:x:65536:12::/dev/null:/sbin/nologin
mail_user_3:x:65537:12::/dev/null:/sbin/nologin
mail_user_4:x:65538:12::/dev/null:/sbin/nologin
mail_user_5:x:65539:12::/dev/null:/sbin/nologin
这里UID是系统自动分配的。
(2)批量修改用户密码
新建mail_users_passwd.txt内容如下:
[root@pps ~]# cat mail_users_passwd.txt
mail_user_1:135790
mail_user_2:135790
mail_user_3:135790
mail_user_4:135790
mail_user_5:135790
【注意】这里的格式也是固定的
新建mail_users_passwd.txt内容如下:
[root@pps ~]# cat mail_users_passwd.txt
mail_user_1:135790
mail_user_2:135790
mail_user_3:135790
mail_user_4:135790
mail_user_5:135790
【注意】这里的格式也是固定的
使用chpasswd命令批量修改用户密码:
[root@pps ~]# chpasswd < mail_users_passwd.txt
[root@pps ~]# chpasswd < mail_users_passwd.txt
这里,相当于我初始化所有邮件用户的密码为135790。
如果使用加密的方式修改密码,则需要使用 -e 参数,可以参考/etc/shadow文件创建密码。(我个人认为实在没有必要用加密方式批量修改用户密码,日后用户自己修改密码还得管理员来完成,我以后得想个办法来实现让用户自己修改POP3/SMTP密码。可以用数据库或者其它的验证方式)
又一个美丽的时刻,新建好的邮件用户可以POP3收信了!
【注意】-【注意】-【注意】-【注意】-【注意】-【注意】-【注意】-【注意】-【注意】
如果想从Internet上收取别的系统发来的邮件,你需要有自己的域名和管理域名DNS解释的权限,主要是做好MX记录解释。比如我的域名是 hoho.com
(其实这已经是被国外注册了的域名,可是我的英文名就叫HoHo[SnailWarrior是我的笔名],呜呜呜……好想要回来)
,我在自己的系统上做了MX记录解释,如下:
[root@pps mail]# nslookup -q=mx hoho.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Server: 127.0.0.1
Address: 127.0.0.1#53
hoho.com mail exchanger = 10 mx1.hoho.com.
hoho.com mail exchanger = 10 mx2.hoho.com.
hoho.com mail exchanger = 10 mx3.hoho.com.
hoho.com mail exchanger = 10 mail.hoho.com.
hoho.com mail exchanger = 10 mx2.hoho.com.
hoho.com mail exchanger = 10 mx3.hoho.com.
hoho.com mail exchanger = 10 mail.hoho.com.
我自己无聊就做了4个MX记录,其实都指向本机的192.168.32.50 IP地址。
因此如果想收取外界的邮件,需要把你的域名的MX记录指向邮件服务器IP地址即可。或者像我这样,先做一个邮件服务器主机的A记录,然后设置MX记录指向邮件服务器主机。
===================================================
客户端SMTP/POP3设置
客户端SMTP/POP3设置
===================================================
以我的机器为例,Foxmail、Outlook里,SMTP/POP3服务器都填写192.168.32.50
用户可以用 mail_user_1 或者用 mail_user_1@hoho.com 或者 mail_user_1@pps.hoho.com 都可以,密码当然就是135790了。
转载于:https://blog.51cto.com/haidi/1238976