##################邮件服务器######################
邮件发送
smtp 协议
需要各种服务来提供该协议
接受方pop协议,imap协议
dovecot服务
作用为提供用户验证
1.重置虚拟机,更改ip,主机名 ,配置yum源仓库,关闭火墙和selinux,安装bind服务
在desktop中
yum install bind -y
hostnamectl set-hostname ***********
vim /etc/yum.repo.d/rhel_dvd.repo
vim /etc/named.conf
注释:11 // listen-on port 53 { 127.0.0.1; };
12 // listen-on-v6 port 53 { ::1; };
17 // allow-query { localhost; };
修改: 32 dnssec-validation no;
cd /var/named
vim /etc/named.rfc1912.zones
zone "westos.com" IN {
type master;
file "westos.com.zone";
allow-update { none; };
};
zone "linux.com" IN {
type master;
file "linux.com.zone";
allow-update { none; };
};
cp -p named.localhost westos.com.zone
vim westos.com.zone
[root@mailwestos named]# cat 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.139
westos.com. MX 1 172.25.254.139.
#############################################
cp -p westos.com.zone linux.com.zone
[root@mailwestos named]# cat 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.139
linux.com. MX 1 172.25.254.239.
测试:dig -t mx westos.com//linux.com
######发邮件#########
两个虚拟机配置一样
smtp服务
vim /etc/postfix/main.cf
76 myhostname = mailwestos.westos.com ##配置主机名
83 mydomain = westos.com ##配置域名
99 myorigin = $mydomain ##配置炮灰域名
113 inet_interfaces = all ##打开所有的接口
114 #inet_interfaces = $myhostname
115 #inet_interfaces = $myhostname, localhost
116 #inet_interfaces = localhost
164 mydestination = $myhostname, $mydomain, localhost ##配置可以接收哪样的邮件
mailq ##查看当前邮箱队列
postquene -f ##刷新邮箱队列,将原来未能成功发送的重新发送一遍
> /var/spool/mail/root ##清空邮件箱
postsuper -d 邮件编码 ##删除邮件队列
mynetworks:允许哪一台主机把它要处理的文件发送给你
mail ##查看邮件
systemctl restart postfix ##重启服务
###########别名和群发##############
1.空壳邮件
vim /etc/aliases
97 admin: root ##root的别名为admin
98 more: :include:/etc/postfix/users ##群发
vim /etc/postfix/users
root
student
:wq
postalias /etc/aliases ##给aliases文件加密
systemctl restart postfix.service
测试:mail admin@linux.com
mail more ##群发
mail -u student ##查看student的邮件
这样在linux中并没有admin用户,依然可以接收到邮件
####伪装用户名和域名######在企业中大多这样操作,可以伪装自己的域名和用户名
##linux中操作#####算作企业发送邮件
vim /etc/postfix/virtual ##配置文件
295 admin@qq.com root@linux.com ##伪装指定域名指定用户
296 @qq.com @linux.com ##伪装域名
postmap /etc/postfix/virtual ##对文件进行加密
postconf -d | grep virtual
postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"
测试:mail admin@qq.com
mail admin@qq.com
test
test
.
EOT
测试:mail student@qq.com
mail student@qq.com
Subject: qq
com
.
EOT
########在westos里面操作#####算作企业回复邮件
cp -p linux.com.zone qq.com.zone
$TTL 1D
@ IN SOA dns.qq.com. root.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.qq.com.
dns A 172.25.254.139
qq.com. MX 1 172.25.254.239.
vim /etc/named.rfc1912.zones
zone "qq.com" IN {
type master;
file "qq.com.zone";
allow-update { none; };
};
systemctl restart named
测试:root@qq.com
#######返回者的信息更改#######
在linux中做的操作
vim generic
root@linux.com root@qq.com
postconf -d | grep generic
postconf -e "smtp_generic_maps = hash:/etc/postfix/generic"
postmap generic ##加密
systemctl restart postfix.service
这样mail发送邮件后,在另一边显示为qq.com发来的邮件
#########devocte############
###telnet##########远程邮件
yum install telnet -y
telnet 172.25.254.239 25 ##远程发送邮件
[root@foundation39 ~]# telnet 172.25.254.239 25
Trying 172.25.254.239...
Connected to 172.25.254.239.
Escape character is '^]'.
220 maillinux.linux.com ESMTP Postfix
ehlo hello
250-maillinux.linux.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:root@westos.com
250 2.1.0 Ok
rcpt to:root@westos.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
kj
jk
.
250 2.0.0 Ok: queued as E223626CE00
quit
221 2.0.0 Bye
Connection closed by foreign host.
###接收邮件####
首先在239里面安装dovecot服务
yum install dovecot -y
86 vim /etc/dovecot/dovecot.conf
24 protocols = imap pop3 lmtp
48 login_trusted_networks = 0.0.0.0/0 ##允许访问网络地址 0.0.0.0/0意思为ip可以和给定的任意不匹配
49 disable_plaintext_auth =no ##开启明文认证
87 vim /etc/dovecot/conf.d/10-mail.conf
> 30 mail_location = mbox:~/mail:INBOX=/var/mail/%u
mkdir /home/student/mail/.imap/
touch ./INBOX
然后在真机里面安装mutt软件
yum insatll mutt -y
然后mutt -f pop://student@172.25.254.239 ##直接查看邮件 只能查看student的不能查看root的
必须要在239中建立了目录和文件后才能查看
rpm -ivh thunderbird-31.2.0-1.el7.x86_64.rpm ##安装雷鸟
thunderbird
然后就进入客户端了
**********#新建的用户会自动建立skel下的目录到自己的家目录 ************
#######邮件和数据库(虚拟用户邮件)#########
先安装数据库等
yum install mariadb-server httpd php php-mysql -y
vim /etc/my.cnf
skip-networking=1
mysql_secure_installation
tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2
mv phpMyAdmin-3.4.0-all-languages/ admin
cp config.sample.inc.php config.inc.php
vim config.inc.php
$cfg['blowfish_secret'] = 'test';
mysql -uroot -p
create user postfix@localhost identified by 'postfix'; ##创建用户
grant insert,select on email.* to postfix@localhost; ##授权
重启httpd和mariadb
测试:172.25.254.239/mysqladmin
先用root登陆然后创建数据库和创建表 然后添加数据
接着退出之后再创建数据库用户和授权 然后测试用创建的用户能不能登陆进去
cd /etc/postfix
[root@maillinux postfix]# cat mysql-user.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = mailsql
select_field = username
where_field = username
cp mysql-user.cf mysql-domain.cf
vim mysql-domain.cf
[root@maillinux postfix]# cat mysql-domain.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = mailsql
select_field = domain
where_field = domain
cp mysql-user.cf mysql-mailbox.cf
vim mysql-mailbox.cf
[root@maillinux postfix]# cat mysql-mailbox.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = mailsql
select_field = maildir
where_field = username
测试: postmap -q "admin@redhat.com" mysql:/etc/postfix/mysql-user.cf
postmap -q "admin@redhat.com" mysql:/etc/postfix/mysql-mailbox.cf
postmap -q "redhat.com" mysql:/etc/postfix/mysql-domain.cf
postconf -d | grep virtual
[root@maillinux postfix]# postconf -e "virtual_mailbox_base = /home/vmail"
[root@maillinux postfix]# postconf -e "virtual_gid_maps = static:888"
[root@maillinux postfix]# postconf -e "virtual_uid_maps = static:888"
postconf -e "virtual_alias_maps = mysql:/etc/postfix/mysql-user.cf"
ls -l /etc/postfix/mysql-user.cf
postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/mysql-domain.cf"
ls -ld /etc/postfix/mysql-domain.cf
postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/mysql-domain.cf"
ls -ld /etc/postfix/mysql-mailbox.cf
先删掉以前做的hash那两行
680 virtual_mailbox_base = /home/vmail ##默认目录
681 virtual_gid_maps = static:888
682 virtual_uid_maps = static:888
683 virtual_alias_maps = mysql:/etc/postfix/mysql-user.cf
684 virtual_mailbox_maps = mysql:/etc/postfix/mysql-mailbox.cf
685 virtual_mailbox_domains = mysql:/etc/postfix/mysql-domain.cf
groupadd -g 888 vmail
useradd -u 888 -g 888 vmail
cd /etc/skel
mkdir mail/.imap
touch INBOX
mail admin@redhat.com
然后cd /home/vmail/mail/redhat.com/new ##查看邮件
#######接收邮件#########
yum install dovecot-mysql.x86_64 -y
vim /etc/dovecot/dovecot.conf
48 login_trusted_networks = 0.0.0.0/0 #允许任意访问网络
49 disable_plaintext_auth = no #开始明文认证
vim /etc/dovecot/conf.d/10-auth.conf
123 !include auth-sql.conf.ext ##开启数据库数据认证
cp /usr/share/doc/dovecot-2.2.10/example-config/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext
vim /etc/dovecot/dovecot-sql.conf.ext
32 driver = mysql ##选择数据库类型
71 connect = host=localhost dbname=email user=postfix password=postfix ##登陆数据库
78 default_pass_scheme = PLAIN ##明文加密
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'
vim /etc/dovecot/conf.d/10-mail.conf
30 mail_location = maildir:/home/vmail/%d/%n ##邮件目录
setsebool -P mysql_connect_any on ##打开selinux服务
配置好了之后我们在真机里面
telnet 172.25.254.239 110
Trying 172.25.254.239..
Connected to 172.25.254.239.
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.
然后在数据库里面插入一组数据
最后打开雷鸟 新建用户
然后尝试发送邮件