邮件服务主要由两部分构成,一部分是发邮件,另一部分是收邮件。
发邮件用的协议是SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议。所用的服务软件是postfix,发送邮件是不需要身份验证的
收邮件指的是远程收邮件,例如用QQMAIL接受服务器里的邮件 需要身份验证,用的协议有POP3,IMAP,这两个写以可提供身份验证的功能,
而搭载这两个协议用的服务是dovecot。
########邮件系统(postfix)l######
需要两台主机,在同一网段(可以ping通)
这里的两台是(westos.westos.com linux.;inux.com)
#####1.配置DNS使得两台主机能够通过名字找到对方####
#yum install bind -y
#vim /etc/named.conf
##开启所有端口
#vim /etc/named.rfc1912.zones
##添加这两个域名
#vim /var/named/linux.com.zone
+ $TTL 1D
+ @
IN SOA
dns.linux.com. root.linux.com. (
+
0
; serial
+
1D
; refresh
+
1H
; retry
+
1W
; expire
+
3H )
; minimum
+
NS
dns.linux.com.
+ dns
A
172.25.254.113
+ linux.com.
MX 1
172.25.254.213.
##邮箱的存放
#vim /var/named/westos.com.zone
+ $TTL 1D
+ @
IN SOA
dns.westos.com. root.westos.com. (
+
0
; serial
+
1D
; refresh
+
1H
; retry
+
1W
; expire
+
3H )
; minimum
+
NS
dns.westos.com.
+ dns
A
172.25.254.113
+ westos.com.
MX 1
172.25.254.113.
#vim /etc/resolv.conf
##修改DNS服务器
#dig -t mx linux.com
##测试
#####2.修改postfix的配置文件使得能互发邮件###
systemctl status postfix.service
##查看邮件服务
1.vim /etc/postfix/main.cf
##修改配置文件
> 76 myhostname = linux.linux.com
##配置主机名
> 83 mydomain = linux.com
##配置域名
> 99 myorigin = $mydomain
##配置给别人发时用的名字
> 113 inet_interfaces = all
##打开所有接口
> 116 #inet_interfaces = localhost
##与上者对应
> 164 mydestination = $myhostname, $mydomain, localhost
##配置收什么样的邮件(什么样的属于自己的)
2.systemctl restart postfix.service
3.mail root@linux.com
##发送邮件,'.'表示结束
4.mailq
##查看邮件队列(未发出的)
6.postqueue -f
##刷新邮箱队列(重发队列里的邮件)
7.cat /var/log/maillog
##查看邮件日志
8.postsuper -d ******
##删除队列李的邮件后面时ID
#####3.别名发送和群发######
->邮件转移
1.vim /etc/aliases
##编辑该文件(类似于邮件转移将前面发给后面)
+ admin: root
##将发给admin的给root
+ more: :include:/etc/postfix/users
##将给more的给后面文件的用户(文件里每行一个用户)
+ root: student
##将发给root的邮件发给student
+ root: root@mr.com
##将发给root的邮件发给root@mr.com
+ root: :include:/etc/postfix/users
##将发给root的邮件发文件的用户
+ admin: root@mr.com
##将发给admin的给root@mr.com
2.postalias /etc/aliases
##加密aliases(重载)
->接受伪装(linux.com可以接受发给mr@qq.com,@163.com的邮件)(别人向这里发送时需要更改DNS)
1.vim /etc/postfix/virtual
##编辑以更换@后面的
+ mr@qq.com root@linux.com
##当发送给前面时自动换乘后面的
+ @163.com @linux.com
##同上
2.postmap /etc/postfix/virtual
##加密处理
3.postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"
##读取加密文件
->发送伪装(用上面两者的身份发送)
1.vim /etc/postfix/generic
+ root@linux.com mr@qq.com
+ @linux.com @qq.com
2.postmap /etc/postfix/generic
3.postconf -e "smtp_generic_maps = hash:/etc/postfix/generic"
#####4.远程收(dovecot)发(postfix)邮件#####
->发邮件(postfix服务)
测试(用其他同网段的电脑):
1.yum install telnet -y
##安装telnet服务
2.telnet 172.25.254.213 25
##测试25端口
- mail from:admin@qq.com
- rcpt to:student@163.com
- data
- quit
->收邮件(dovecot服务)
1.yum install dovecot -y
2.vim /etc/dovecot/dovecot.conf
##编辑主配置文件
> 24 protocols = imap pop3 lmtp
> 48 login_trusted_networks = 0.0.0.0/0
+ 49 disable_plaintext_auth = no
3.vim /etc/dovecot/conf.d/10-mail.conf
##子配置文件
> 30 mail_location = mbox:~/mail:INBOX=/var/mail/%u
4.systemctl start dovecot
5.touch ~/mail/.imap/INBOX
##用student(普通用户)建立
->拓展
6.touch /etc/skel/mail/.imap/INBOX
##新建的用户会自动建立skel下的目录到自己的家目录
测试(用其他同网段的电脑):
1.yum install mutt -y
2.mutt -f pop://student@172.25.254.213
3.可以使用客户端雷鸟
#######5.建立虚拟用户处理邮件########
1.yum install mariadb-server httpd php php-mysql -y
mysql -uroot -p
create user postfix@localhost identified by 'postfix';
##创建用户
grant insert,select on email.* to postfix@localhost;
##授权
配置图形数据库建立一个数据库email,表maildb,和字段(username,password,domain,maildir(/redhat.com/mr/)),并插入一条数据
2.建立一个数据库用户postfix,密码postfix,权限仅对email有INSERT和SELECT
3.vim /etc/postfix/mysql-users.cf
##建立查询用户名,mysql脚本
+ hosts = localhost
##指定主机
+ user = postfix
##指定用户
+ password = postfix
##指定密码
+ dbname = email
##指定数据库
+ table = maildb
##指定表名
+ select_field = username
##查询username
+ where_field = username
##条件
4.vim /etc/postfix/mysql-domain.cf
##建立查询域名
+ hosts = localhost
+ user = postfix
+ password = postfix
+ dbname = email
+ table = maildb
+ select_field = domain
+ where_field = domain
5.vim /etc/postfix/mysql-mailbox.cf
##建立查询邮件目录
+ hosts = localhost
+ user = postfix
+ password = postfix
+ dbname = email
+ table = maildb
+ select_field = maildir
+ where_field = username
6.postmap -q "mr@redhat.com" mysql:/etc/postfix/mysql-mailbox.cf
##测试邮件目录查询
7.postmap -q "mr@redhat.com" mysql:/etc/postfix/mysql-users.cf
##测试用户名查询
8.postmap -q "redhat.com" mysql:/etc/postfix/mysql-domain.cf
##测试主机名查询
9.groupadd -g 888 vmail
10.useradd -u 888 -g 888 vmail
(11.)postconf -e "virtual_gid_maps = static:888"
##可以通过命令实现
11.vim /etc/postfix/main.cf
##也可以通过编写配置文件
+ virtual_mailbox_base = /home/vmail
+ virtual_gid_maps = static:888
+ virtual_uid_maps = static:888
+ virtual_alias_maps = mysql:/etc/postfix/mysql-users.cf
+ virtual_mailbox_maps = mysql:/etc/postfix/mysql-mailbox.cf
+ virtual_mailbox_domains = mysql:/etc/postfix/mysql-domain.cf
12.systemctl restart postfix.service
#######6.建立虚拟用户收邮件#########
1.yum install dovecot-mysql.x86_64 -y
2.vim /etc/dovecot/dovecot.conf
> 48 login_trusted_networks = 0.0.0.0/0
#允许访问网络地址
+ 49 disable_plaintext_auth = no
#开始明文认证
3.vim /etc/dovecot/conf.d/10-auth.conf
> 123 !include auth-sql.conf.ext
##开启数据库数据认证
4.cp /usr/share/doc/dovecot-2.2.10/example-config/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext
5.vim /etc/dovecot/dovecot-sql.conf.ext
> 32 driver = mysql
##选择数据库类型
> 78 default_pass_scheme = PLAIN
##明文加密
> 71 connect = host=localhost dbname=email user=postfix password=postfix
##登陆数据库
> 107 password_query = \
##用密码认证 数据库里面找用户名 域名和密码
108 SELECT username, domain, password \
109 FROM mailsql WHERE username = '%u' AND domain = '%d'
> 125 user_query = SELECT maildir, 888 AS uid, 888 AS gid FROM mailsql WHERE username = '%u'
6.vim /etc/dovecot/conf.d/10-mail.conf
> 30 mail_location = maildir:/home/vmail/%d/%n
##邮件目录
7.setsebool -P mysql_connect_any on
##打开selinux服务的允许
测试(另一台主机):
telnet 172.25.254.213 110
##利用telnet测试110端口
Trying 172.25.254.213...
Connected to 172.25.254.213.
Escape character is '^]'.
+OK [XCLIENT] Dovecot ready.
user admin@redhat.com
+OK
pass 123
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.
最后打开雷鸟或QQmail登录测试