首页 > 代码库 > 西部开源学习笔记BOOK3《unit 4.SMTP》
西部开源学习笔记BOOK3《unit 4.SMTP》
################################
########## unit4.SMTP ##########
################################
###########1.实验环境搭建############
desktop:172.25.254.119
hostname:maillinux.linux.com
dns-server:172.25.254.219
server:172.25.254.219
hostname:mailwestos.westos.com
dns-server:172.25.254.219
#########2.必要软件的安装#########
[root@mailwestos ~]# yum install bind -y
#########3.DNS的配置########
server端:
[root@mailwestos ~]# vim /etc/resolv.conf
2 domain westos.com
3 search westos.com linux.com
4 nameserver 172.25.254.219
[root@mailwestos ~]# 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;##关闭dns安全认证
[root@mailwestos ~]# vim /etc/named.rfc1912.zones
25 zone "linux.com" IN {
26 type master;
27 file "linux.com.zone";
28 allow-update { none; };
29 };
30
31 zone "westos.com" IN {
32 type master;
33 file "westos.com.zone";
34 allow-update { none; };
35 };
[root@mailwestos ~]# cd /var/named/
[root@mailwestos named]# cp -p named.localhost westos.com.zone
[root@mailwestos named]# cp -p named.localhost linux.com.zone
[root@mailwestos named]# vim westos.com.zone
1 $TTL 1D
2 @ IN SOA dns.westos.com. root.westos.com. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.com.
9 dns A 172.25.254.219
10 westos.com. MX 1 172.25.254.219.
[root@mailwestos named]# vim linux.com.zone
1 $TTL 1D
2 @ IN SOA dns.linux.com root.linux.com. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.linux.com.
9 dns A 172.25.254.219
10 linux.com. MX 1 172.25.254.119.
##注意:两条MX记录分别对应两个不同的域名和主机ip
[root@mailwestos named]# systemctl start named##启动服务
[root@mailwestos named]# firewall-cmd --permanent --add-service=dns##防火墙允许dns服务
success
[root@mailwestos named]# firewall-cmd --reload ##重启防火墙后生效
success
desktop端:
[root@maillinux ~]# vim /etc/resolv.conf
domain linux.com
search linux.com westos.com
nameserver 172.25.254.219
测试:
server端:
[root@mailwestos named]# dig -t MX westos.com
;; ANSWER SECTION:
westos.com.86400INMX1 172.25.254.219.
[root@mailwestos named]# dig -t MX linux.com
;; ANSWER SECTION:
linux.com.86400INMX1 172.25.254.119.
desktop端:
[root@maillinux ~]# dig -t MX westos.com
;; ANSWER SECTION:
westos.com.86400INMX1 172.25.254.219.
[root@maillinux ~]# dig -t MX linux.com
;; ANSWER SECTION:
linux.com.86400INMX1 172.25.254.119.
#########3.SMTP服务基础配置#########
server端:
[root@mailwestos named]# netstat -antple | grep 25##查看SMTP服务的端口是否开启
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 25 51218 3223/named
tcp 0 0 172.25.254.219:53 0.0.0.0:* LISTEN 25 51215 3223/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 25 51213 3223/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 20925 1262/sshd
tcp 0 0 172.25.254.219:22 172.25.254.19:55336 ESTABLISHED 0 25114 1588/sshd: root@pts
tcp6 0 0 ::1:953 :::* LISTEN 25 51219 3223/named
tcp6 0 0 :::25 :::* LISTEN 0 21229 1386/master
tcp6 0 0 :::111 :::* LISTEN 0 20425 1276/rpcbind
##经查看并为开启SMTP服务的端口
[root@mailwestos named]# vim /etc/postfix/main.cf ##配置SMTP主配置文件
75 myhostname = mailwestos.westos.com##设置自己的主机名
83 mydomain = westos.com##设置自己的域名
99 myorigin = $mydomain##设置源=(自己的域名)
113 inet_interfaces = all##开放所有ip上的25端口
116 #inet_interfaces = localhost##将这一行注释掉(否则会影响第113行)
164 mydestination = $myhostname, $mydomain, localhost##只处理发给(自己的主机名|域名|localhost)的邮件
[root@mailwestos named]# systemctl restart postfix.service##重启服务后生效
测试:
server端:
[root@mailwestos named]# mail root@westos.com##server给自己发mail
Subject: 123
ewqe
dawd
dawd
.
EOT
[root@mailwestos named]# mail##查看所有邮件
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 unread
>U 1 root Tue Nov 29 10:11 21/576 "123"
&
##发送成功。(此时是219主机给自己发mail,因为119主机上并未配置smtp,所以219现在无法给119发mail)
或:
[root@mailwestos ~]# mail -u root##查看发给root的mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/root": 1 message 1 unread
>U 1 root Tue Nov 29 10:11 21/576
&
==================注意=======================
上面的测试是server发mail给server端,不需要关闭防火墙。
但server和desktop之间相互发送mail的时候,要将双方的防火墙关闭,否则会发送失败。
============================================
补充:
1.当mail发送失败时,会保存下来。
[root@mailwestos named]# mail root@linux.com##发给linux.com,但linux.com并未配置smtp
Subject: tbr
qeqwdwwa
dawda
dawdaw
.
EOT
[root@mailwestos named]# mailq##查看待寄mail的清单及其相关信息
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
D2ABE24620B 447 Tue Nov 29 10:21:22 root@westos.com
(connect to 172.25.254.119[172.25.254.119]:25: No route to host)
root@linux.com
-- 0 Kbytes in 1 Request.
[root@mailwestos named]# postqueue -p##查看寄存队列内容
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
1830C246219 443 Fri Dec 2 02:25:05 root@westos.com
(Host or domain name not found. Name service error for name=linux.com type=MX: Host not found, try again)
root@linux.com
-- 0 Kbytes in 1 Request.
[root@mailwestos named]# postqueue -f##将待寄存队列的mail再发送一遍
[root@mailwestos named]# postsuper -d D2ABE24620B##删除发送失败的mail,‘D2ABE24620B为该条mail的标示
postsuper: D2ABE24620B: removed
postsuper: Deleted: 1 message
[root@mailwestos named]# postsuper -dALL##删除队列的所有寄存mail
[root@mailwestos named]# postconf -d##查看默认配置
[root@mailwestos named]# postconf -n##查看当前的配置
[root@mailwestos named]# postconf -e "inet_interface=localhost"
[root@mailwestos named]# postconf -d | grep inet
inet_interfaces = all
inet_protocols = all
local_header_rewrite_clients = permit_inet_interfaces
[root@mailwestos named]# vim /etc/postfix/main.cf
[root@mailwestos named]# ll /usr/sbin/sendmail
lrwxrwxrwx. 1 root root 21 5月 6 2014 /usr/sbin/sendmail -> /etc/alternatives/mta
[root@mailwestos named]# ll /etc/alternatives/mta
lrwxrwxrwx. 1 root root 26 5月 6 2014 /etc/alternatives/mta -> /usr/sbin/sendmail.postfix
#########4.主机之间发送mail##########
server端:
[root@mailwestos named]# systemctl stop firewalld.service##关闭防火墙
[root@mailwestos named]# scp /etc/postfix/main.cf root@172.25.254.119:/etc/postfix/main.cf
desktop端:
[root@maillinux named]# vim /etc/postfix/main.cf ##配置SMTP主配置文件
:%s/westos/linux/g##将全局的westos换为linux就ok了
[root@maillinux named]# systemctl restart postfix.service##重启服务后生效
[root@mailwestos named]# systemctl stop firewalld.service##关闭防火墙
测试:
desktop端--->server端
[root@maillinux ~]# mail root@westos.com
Subject: test1
dawdaw
dawda
wdaw
da
w
.
EOT
[root@mailwestos named]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Fri Dec 2 08:34 25/755
& 1
Message 1:
From root@linux.com Fri Dec 2 08:34:35 2016
Return-Path: <root@linux.com>
X-Original-To: root@westos.com
Delivered-To: root@westos.com
Date: Fri, 02 Dec 2016 08:33:45 -0500
To: root@westos.com
Subject: test1
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@linux.com (root)
Status: R
dawdaw
dawda
wdaw
da
w
&
server端--->server端:
[root@mailwestos named]# mail root@linux.com
Subject: test2
wqqdwq
dawdwfda
dawdaw
.
EOT
[root@maillinux ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Fri Dec 2 08:39 23/761
& 1
Message 1:
From 173209146@qq.com Fri Dec 2 08:39:06 2016
Return-Path: <173209146@qq.com>
X-Original-To: root@linux.com
Delivered-To: root@linux.com
Date: Fri, 02 Dec 2016 08:39:06 -0500
To: root@linux.com
Subject: test2
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: 173209146@qq.com (root)
Status: R
wqqdwq
dawdwfda
dawdaw
&
#########4.虚拟邮件帐号#########
这个虚拟帐号名可以是系统中存在的帐号,也可以是不存在的。
正常情况下:
server端存在student用户,desktop给server的student用户发送邮件恶的情况如下:
[root@maillinux ~]# mail student@westos.com
Subject: test3
awdwqe
dwqdq
.
EOT
[root@mailwestos named]# mail -u student##是student用户收到mail,而不是root
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/student": 1 message
> 1 root Tue Dec 6 01:43 23/805 "student"
&
修改了虚拟用户之后:
server端:
[root@mailwestos named]# vim /etc/aliases
97 admin: root
98 student: root
[root@mailwestos named]# postalias /etc/aliases##加密(hash)生成db文件
[root@mailwestos named]# ll /etc/aliases*
-rw-r--r--. 1 root root 1576 12月 2 09:30 /etc/aliases
-rw-r--r--. 1 root root 12288 12月 2 09:08 /etc/aliases.db##生成了该文件(系统最后读的是这个文件)
[root@mailwestos named]# systemctl restart postfix.service ##重启服务后生效
测试:
desktop端:
[root@maillinux ~]# mail admin@westos.com
Subject: test3
adwdq
dawdawd
dadawd
.
EOT
[root@maillinux ~]# mail student@westos.com
Subject: test4
qweqwd
dqwdzcfad
dawdawdwa
dqwdq
.
EOT
server端:
[root@mailwestos named]# mail -u root##发给admin和student的mail其实是root接收了
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 3 messages 1 unread
1 root Fri Dec 2 08:34 26/766
2 root Fri Dec 2 09:06 24/768 ##这个是admin(实际收件人为root)
>U 3 root Fri Dec 2 09:09 25/787 ##这个是student(实际收件人为root)
&
##########5.邮件群发###########
server端:
[root@mailwestos named]# vim /etc/aliases
97 admin: root##删除此行
98 student: root##删除此行
99 more: :include:/etc/moreusers##指定群发的用户文件
============或=============
99 more: admin,student
[root@mailwestos named]# postalias /etc/aliases##重新生成db加密文件
[root@mailwestos named]# systemctl restart postfix.service ##重启服务后生效
[root@mailwestos named]# vim /etc/moreusers
1 admin
2 student
创建amdin和student用户:
[root@mailwestos named]# useradd admin
[root@mailwestos named]# useradd student
[root@mailwestos named]# id admin
uid=1001(admin) gid=1001(admin) groups=1001(admin)
[root@mailwestos named]# id student
uid=1000(student) gid=1000(student) groups=1000(student)
测试:
desktop端:
[root@maillinux ~]# mail more@westos.com
Subject: 123
adawdwq
dwadawd
dawdaw
.
EOT
server端:
[root@mailwestos named]# mail -u student
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/student": 2 messages 1 new
>N 2 root Tue Dec 6 02:02 25/912 "123"
[root@mailwestos named]# mail -u admin
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/admin": 1 message 1 new
>N 1 root Tue Dec 6 02:02 25/910 "123"
##两个用户都收到了mail
#########6.mail地址的别名########
在desktop端:
[root@maillinux postfix]# ls
access generic main.cf relocated virtual
canonical header_checks master.cf transport
[root@maillinux postfix]# vim virtual
295 173209146@qq.com root@westos.com
[root@maillinux postfix]# postmap virtual##生成virtual.db加密文件
[root@maillinux postfix]# ls
access generic main.cf relocated virtual
canonical header_checks master.cf transport virtual.db
[root@maillinux postfix]# postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"##给/etc/postfix/main.cf主配置文件添加该条参数
[root@maillinux postfix]# systemctl restart postfix.service
测试:
desktop端:
[root@maillinux postfix]# mail 173209146@qq.com
Subject: hehehe
dfqwfqwf
qwfwwqfqwf
.
EOT
server端:
[root@mailwestos postfix]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 3 messages 1 new
>N 1 root Tue Dec 6 03:05 22/753 "hehehe"
&
#########7.出站地址伪装##########
[root@mailwestos named]# cd /etc/postfix/
[root@mailwestos postfix]# vim generic
240 root@westos.com 173209146@qq.com ##前面的是原本的域名,后面的是伪装的域名
[root@mailwestos postfix]# ls
access generic main.cf relocated virtual
canonical header_checks master.cf transport
[root@mailwestos postfix]# postmap generic##生成generic.db加密文件
[root@mailwestos postfix]# ls
access generic.db master.cf virtual
canonical header_checks relocated
generic main.cf transport
[root@mailwestos postfix]# postconf -e "smtp_generic_maps = hash:/etc/postfix/generic"##给/etc/postfix/main.cf主配置文件添加该条参数
[root@mailwestos postfix]# systemctl restart postfix.service
测试:
server端:
[root@mailwestos postfix]# mail root@linux.com
Subject: tbr
qweqw
dada
w
.
EOT
desktop端:
[root@maillinux ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Sun Nov 27 03:46 23/749 "tbr"
& 1
Message 1:
From 173209146@qq.com Sun Nov 27 03:46:51 2016
Return-Path: <173209146@qq.com>
X-Original-To: root@linux.com
Delivered-To: root@linux.com
Date: Sun, 27 Nov 2016 03:46:50 -0500
To: root@linux.com
Subject: tbr
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: 173209146@qq.com (root)
Status: R
qweqw
dada
w
&
###########8.通过telnet远程登陆发送邮件############
##真实主机上安装Telnet软件(真实主机ip:172.25.254.19)
[root@foundation19 Software]# yum install telnet -y
[root@foundation19 Software]# telnet 172.25.254.219 25##通过25端口连接
Trying 172.25.254.219...
Connected to 172.25.254.219.
Escape character is ‘^]‘.
220 mailwestos.westos.com ESMTP Postfix
500 5.5.2 Error: bad syntax
ehlo hello##显示如下,则登陆成功
250-mailwestos.westos.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:root@linux.com##mail由发送方
250 2.1.0 Ok
rcpt to:root@westos.com##mail的接受方
250 2.1.5 Ok
data##输入data之后下面写正文
354 End data with <CR><LF>.<CR><LF>
dafadada
adad
dawdad
adad
.
250 2.0.0 Ok: queued as 4541524620D
quit ##退出
Connection closed by foreign host.
[root@foundation19 Software]#
###########9.根据ip来拒绝smtp连接请求##########
##该配置会导致被拒绝的ip主机telnet上邮件服务器之后无法收发邮件(实际是拒绝了smtp连接请求)。注意不要和邮件服务器本地用户的在服务器端直接收发邮件的权限混淆。
[root@mailwestos ~]# cd /etc/postfix/
[root@mailwestos postfix]# vim access
477 172.25.254.19 REJECT##此处填写拒绝的主机ip(本实验是真实主机ip172.25.254.19,注意:477是行号)
[root@mailwestos postfix]# ls
access generic main.cf relocated virtual
canonical header_checks master.cf transport
[root@mailwestos postfix]# postmap access ##生成.db加密文件
[root@mailwestos postfix]# ls
access canonical header_checks master.cf transport
access.db generic main.cf relocated virtual
[root@mailwestos postfix]# postconf -d | grep client##通过该命令查询关于mail-server的client的配置
broken_sasl_auth_clients = no
local_header_rewrite_clients = permit_inet_interfaces
parent_domain_matches_subdomains =
.
.
.
smtpd_client_recipient_rate_limit = 0
smtpd_client_restrictions =##应用这条命令
unknown_client_reject_code = 450
[root@mailwestos postfix]# postconf -e "smtpd_client_restrictions = check_client_access hash:/etc/postfix/access"
##将该条配置加到主配置文件中,注意这里面的access其实指的是access.db文件
[root@mailwestos postfix]# vim /etc/postfix/main.cf ##检查上条命令是否生效
680 smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
##有此行表示生效了
[root@mailwestos postfix]# systemctl restart postfix.service##重启服务生效
测试:
真实主机(172.25.254.19):
[root@foundation19 Desktop]# telnet 172.25.254.219 25
Trying 172.25.254.219...
Connected to 172.25.254.219.
Escape character is ‘^]‘.
220 mailwestos.westos.com ESMTP Postfix
ehlo hello##可以成功telnet到服务器端
250-mailwestos.westos.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@linux.com##此时会产生报错,因为client端ip被拒绝了
554 5.7.1 <unknown[172.25.254.19]>: Client host rejected: Access denied
##########10.禁止邮件服务器本地的指定用户发送mail##############
##该配置会导致被远程登陆上邮件服务器无法使用指定的用户进行发件。注意不要和邮件服务器本地用户的在服务器端直接发邮件的权限混淆。
注意:在该实验之前先将上一个实验中的部分配置删除,否册影响实验
[root@mailwestos postfix]# vim /etc/postfix/main.cf
680 smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
##删除该行
server端:
[root@mailwestos postfix]# vim sender##这个文件在/etc/postfix/下没有,需要自己创建(可以自命名)
westos@westos.com REJECT##这里要写用户+域名(此处禁止了server端的westos用户发送mail)
[root@mailwestos postfix]# postmap sender ##生成.db加密文件
[root@mailwestos postfix]# ls
access header_checks mysql-maildir.cf sender.db
access.db main.cf mysql-user.cf transport
canonical master.cf relocated virtual
generic mysql-domain.cf sender
[root@mailwestos postfix]# postconf -e "smtpd_sender_restrictions = check_sender_access hash:/etc/posfix/sender"
##将该条配置加到主配置文件中,注意这里面的sender其实指的是sender.db文件
[root@mailwestos postfix]# vim /etc/postfix/main.cf ##检查上条命令是否生效
681 smtpd_sender_restrictions = check_sender_access hash: /etc/posfix/sender
##有此行表示生效了
[root@mailwestos postfix]# systemctl restart postfix.service##重启服务生效
[root@mailwestos postfix]# useradd westos##创建westos用户,作为测试用
[westos@mailwestos postfix]$ id westos
uid=1002(westos) gid=1002(westos) groups=1002(westos)
测试:
真实主机(172.25.254.19):
[root@foundation19 Desktop]# telnet 172.25.254.219 25
Trying 172.25.254.219...
Connected to 172.25.254.219.
Escape character is ‘^]‘.
220 mailwestos.westos.com ESMTP Postfix
mail from:westos@westos.com##注意;此处是用westos用户发送
250 2.1.0 Ok
rcpt to:root@linux.com##无法发送,发送方的地址被拒绝
451 4.3.5 <westos@westos.com>: Sender address rejected: Access denied
============邮件服务器本地的westos用户还是可以发送的========
server端:
[root@mailwestos postfix]# su - westos
[westos@mailwestos ~]$ mail root@linux.com
Subject: tbr
adwdwq
dawdwad
fawdawd
.
EOT
desktop端:
[root@maillinux ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 westos@westos.com Sat Dec 3 06:00 23/754
& 1
#########11.禁止指定用户接收mail###############
[root@mailwestos postfix]# vim recip##这个文件在/etc/postfix/下没有,需要自己创建(可以自命名)
1 westos@westos.com REJECT
[root@mailwestos postfix]# postmap recip ##生成.db加密文件
[root@mailwestos postfix]# postconf -e "smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recip"
##将该条配置加到主配置文件中,注意这里面的sender其实指的是sender.db文件
[root@mailwestos postfix]# systemctl restart postfix.service ##重启服务后生效
测试:
真实主机(172.25.254.19)
[root@foundation19 Desktop]# telnet 172.25.254.219 25
Trying 172.25.254.219...
Connected to 172.25.254.219.
Escape character is ‘^]‘.
220 mailwestos.westos.com ESMTP Postfix
mail from:root@westos.com
250 2.1.0 Ok
rcpt to:westos@westos.com
554 5.7.1 <westos@westos.com>: Recipient address rejected: Access denied
##########12.dovecot与mail##########
server端:
[root@mailwestos ~]# yum install dovecot -y
[root@mailwestos ~]# cd /etc/dovecot/
[root@mailwestos dovecot]# ls
conf.d dovecot.conf
[root@mailwestos dovecot]# vim dovecot.conf
24 protocols = imap pop3 lmtp
46 # for authentication checks). disable_plaintext_auth is also ignored for
49 disable_plaintext_auth = no
[root@mailwestos dovecot]# cd conf.d/
[root@mailwestos conf.d]# vim 10-mail.conf
25 # mail_location = mbox:~/mail:INBOX=/var/mail/%u
30 mail_location = mbox:~/mail:INBOX=/var/mail/%n##注意:这里改为%n
[root@mailwestos conf.d]# systemctl start dovecot
[root@mailwestos conf.d]# netstat -antple| grep dovecot
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 0 59637 3274/doveco
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 0 59613 3274/doveco
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 0 59611 3274/doveco
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 0 59635 3274/doveco
tcp6 0 0 :::993 :::* LISTEN 0 59638 3274/doveco
tcp6 0 0 :::995 :::* LISTEN 0 59614 3274/doveco
tcp6 0 0 :::110 :::* LISTEN 0 59612 3274/doveco
tcp6 0 0 :::143 :::* LISTEN 0 59636 3274/doveco
[root@mailwestos conf.d]# su - westos
[westos@mailwestos ~]$ mkdir -p mail/.imap/
[westos@mailwestos ~]$ touch mail/.imap/INBOX
[westos@mailwestos ~]$ logout
[root@mailwestos conf.d]# cd /etc/skel/
[root@mailwestos skel]# mkdir -p mail/.imap
[root@mailwestos skel]# touch mail/.imap/INBOX
[root@mailwestos ~]# useradd tbr
[root@mailwestos ~]# su - tbr
[tbr@mailwestos ~]$ ls
[tbr@mailwestos ~]$ cd mail/
[tbr@mailwestos mail]$ ls -a
. .. .imap
[tbr@mailwestos mail]$ cd .imap/
[tbr@mailwestos .imap]$ ls
INBOX
真实主机端:
[root@foundation19 Desktop]# yum install mutt -y
server端:
[root@mailwestos conf.d]# > /var/log/maillog
#########14.thunderbird雷鸟(本地邮件代理)#########
1.安装thunderbird
[root@maillinux mnt]# lftp 172.25.254.250
====在/pub/docs/software下get thunderbird-31.4.0.tar.bz2=====
[[root@maillinux mnt]# ls
thunderbird-31.4.0.tar.bz2
[root@maillinux mnt]# tar jxf thunderbird-31.4.0.tar.bz2
ls
[root@maillinux mnt]# ls
thunderbird thunderbird-31.4.0.tar.bz2
[root@maillinux mnt]# cd thunderbird/
===========以下这部分,是用来将thunderbird需要的的相关软件也找出来并安装==========
[root@maillinux thunderbird]# ./thunderbird
-bash: ./thunderbird: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
[root@maillinux thunderbird]# yum whatprovides /lib/ld-linux.so.2
[root@maillinux thunderbird]# yum isntall glibc-2.17-55.el7.i686 -y
==========================================================================
[root@maillinux thunderbird]# ./thunderbird
(process:2668): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0‘ failed
Error: no display specified##直到最后显示为这个:表示图形无法打开
[root@maillinux thunderbird]# logout##关闭ssh,并以图形的方式建立ssh连接
Connection to 172.25.254.119 closed.
[root@foundation19 Desktop]# ssh root@172.25.254.119 -X##注意:此处加-X
root@172.25.254.119‘s password:
Last login: Thu Dec 8 02:56:30 2016 from 172.25.254.19
2.设置dovecot
[root@mailwestos ~]# vim /etc/dovecot/dovecot.conf
48 login_trusted_networks = 0.0.0.0/0
[root@mailwestos ~]# systemctl restart dovecot.service
3.配置之前创建的westos用户和tbr用户
注意:westos用户有密码,但此时tbr用户没有密码,需要加一个密码
[root@maillinux ~]# cd /mnt/
[root@maillinux mnt]# ls
thunderbird thunderbird-31.4.0.tar.bz2
[root@maillinux mnt]# cd thunderbird/
[root@maillinux thunderbird]# ./thunderbird
您的大名:westos
电子邮件地址:westos@westos.com
伺服器主机名称埠SSL认证
收件:IMAP172.25.254.219143无自动侦测
寄件:SMTP172.25.254.21925无自动侦测
使用者名称:收件westos寄件:westos
下图为添加tbr用户:
【重新测定】
【下载邮件】即可
###########15.与数据库关联,建立虚拟用户############
指定所有的用户
1.安装软件
server端:
[root@mailwestos ~]# yum install mariadb-server httpd php php-mysql.x86_64 -y
[root@mailwestos ~]# cd /var/www/html/
[root@mailwestos html]# lftp 172.25.254.250
=======在/pub/docs/software下get phpMyAdmin-3.4.0-all-languages.tar.bz2
[root@mailwestos html]# ls
phpMyAdmin-3.4.0-all-languages.tar.bz2
2.配置MYSQL
server端:
[root@mailwestos html]# tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2
[root@mailwestos html]# ls
phpMyAdmin-3.4.0-all-languages
phpMyAdmin-3.4.0-all-languages.tar.bz2
[root@mailwestos html]# rm -fr phpMyAdmin-3.4.0-all-languages.tar.bz2
[root@mailwestos html]# ls
phpMyAdmin-3.4.0-all-languages
[root@mailwestos html]# mv phpMyAdmin-3.4.0-all-languages myadmin
[root@mailwestos html]# ls
myadmin
[root@mailwestos html]# cd myadmin/
[root@mailwestos myadmin]# cp config.sample.inc.php config.inc.php
[root@mailwestos myadmin]# vim config.inc.php
17 $cfg[‘blowfish_secret‘] = ‘tbr‘; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
[root@mailwestos myadmin]# vim /etc/hosts
6 172.25.254.219 mailwestos.westos.com westos.org
[root@mailwestos myadmin]# systemctl start httpd
[root@mailwestos myadmin]# systemctl start mariadb
[root@mailwestos myadmin]# mysql_secure_installation
[root@mailwestos myadmin]# systemctl restart mariadb.service
[root@mailwestos myadmin]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.35-MariaDB MariaDB Server
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]>
测试:
真实主机(172.25.254.219)
http://172.25.254.219/myadmin/
输入【帐号】【密码】
新建数据库:email
server端:
[root@mailwestos myadmin]# mysql -uroot -p
Enter password:
MariaDB [(none)]> select * from email.vuser;
+------------------+----------+------------+-------------------------------+
| username | password | domain | maildir |
+------------------+----------+------------+-------------------------------+
| admin@westos.org | 123 | westos.org | /home/vmail/westos.org/admin/ |
+------------------+----------+------------+-------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> CREATE USER postfix@localhost identified by ‘postfix‘;
Query OK, 0 rows affected (0.00 sec)
##创建虚拟用户table的管理用户postfix
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE on email.* to postfix@localhost;
Query OK, 0 rows affected (0.00 sec)
##发放权限给管理员postfix
MariaDB [(none)]> quit
Bye
[root@mailwestos myadmin]# mysql -upostfix -ppostfix
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| email |
+--------------------+
2 rows in set (0.00 sec)
MariaDB [(none)]> SELECT * FROM email.vuser;
+------------------+----------+------------+-------------------------------+
| username | password | domain | maildir |
+------------------+----------+------------+-------------------------------+
| admin@westos.org | 123 | westos.org | /home/vmail/westos.org/admin/ |
+------------------+----------+------------+-------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> quit
Bye
[root@mailwestos myadmin]# cd /etc/postfix/
[root@mailwestos postfix]# vim mysql-user.cf
1 hosts = localhost
2 user = postfix
3 password = postfix
4 dbname = email
5 table = vuser
6 select_field = username
7 where_field = username
[root@mailwestos postfix]# postmap -q "admin@westos.org" mysql:/etc/postfix/mysql-user.cf
[root@mailwestos postfix]# postmap -q "admin@westos.org" mysql:/etc/postfix/mysql-user.cf##再次执行后有如下显示则生效
admin@westos.org
[root@mailwestos postfix]# postmap -q "tbr@westos.org" mysql:/etc/postfix/mysql-user.cf
[root@mailwestos postfix]# postmap -q "tbr@westos.org" mysql:/etc/postfix/mysql-user.cf
tbr@westos.org
[root@mailwestos postfix]# cp -p mysql-user.cf mysql-domain.cf
[root@mailwestos postfix]# cp -p mysql-user.cf mysql-maildir.cf
[root@mailwestos postfix]# vim mysql-domain.cf
1 hosts = localhost
2 user = postfix
3 password = postfix
4 dbname = email
5 table = vuser
6 select_field = domain
7 where_field = domain
[root@mailwestos postfix]# vim mysql-maildir.cf
1 hosts = localhost
2 user = postfix
3 password = postfix
4 dbname = email
5 table = vuser
6 select_field = maildir
7 where_field = username
[root@mailwestos postfix]# groupadd -g 666 vmail
[root@mailwestos postfix]# useradd -u 666 -g 666 vmail -s /sbin/nologin
[root@mailwestos postfix]# postconf -e "virtual_gid_maps = static:666"
[root@mailwestos postfix]# postconf -e "virtual_uid_maps = static:666"
[root@mailwestos postfix]# postconf -e "virual_mailbox_base = /home/vmail"
[root@mailwestos postfix]# postconf -e "virtual_alias_maps = mysql:/etc/postfix/mysql-user.cf"
[root@mailwestos postfix]# ll /etc/postfix/mysql-user.cf
-rw-r--r--. 1 root root 128 12月 8 07:49 /etc/postfix/mysql-user.cf
[root@mailwestos postfix]# postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/mysql-domain.cf"
[root@mailwestos postfix]# ll /etc/postfix/mysql-domain.cf
-rw-r--r--. 1 root root 124 12月 8 08:03 /etc/postfix/mysql-domain.cf
[root@mailwestos postfix]# postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/mysql-maildir.cf"
[root@mailwestos postfix]# ll /etc/postfix/mysql-maildir.cf
-rw-r--r--. 1 root root 127 12月 8 08:04 /etc/postfix/mysql-maildir.cf
[root@mailwestos vmail]# systemctl restart postfix.service
测试:
在server端:
[root@mailwestos vmail]# mail admin@westos.org
Subject: test1
afwfqfq
qwfqwfwqdfq
.
EOT
[root@mailwestos vmail]# ls
mail westos.org
[root@mailwestos vmail]# cd westos.org/
[root@mailwestos westos.org]# ls
admin
[root@mailwestos westos.org]# cd admin/
[root@mailwestos admin]# ls
cur new tmp
[root@mailwestos admin]# cat new/1481204095.Vfd01I271795M137319.mailwestos.westos.com
Return-Path: <root@westos.com>
X-Original-To: admin@westos.org
Delivered-To: admin@westos.org
Received: by mailwestos.westos.com (Postfix, from userid 0)
id 17E9E271786; Thu, 8 Dec 2016 08:34:54 -0500 (EST)
Date: Thu, 08 Dec 2016 08:34:54 -0500
To: admin@westos.org
Subject: test1
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20161208133455.17E9E271786@mailwestos.westos.com>
From: root@westos.com (root)
afwfqfq
qwfqwfwqdfq
############16.postfix+mariadb(MYSQL)+thunderbird##############
[root@mailwestos admin]# cd /etc/dovecot/conf.d/
[root@mailwestos conf.d]# vim 10-auth.conf
123 !include auth-sql.conf.ext##将此行注释取消掉
[root@mailwestos conf.d]# cd /usr/share/doc/dovecot-2.2.10/example-config/
[root@mailwestos example-config]# ls
conf.d dovecot-dict-auth.conf.ext dovecot-ldap.conf.ext
dovecot.conf dovecot-dict-sql.conf.ext dovecot-sql.conf.ext
[root@mailwestos example-config]# cp dovecot-sql.conf.ext /etc/dovecot/
[root@mailwestos example-config]# cd /etc/dovecot/
[root@mailwestos dovecot]# vim 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 vuser WHERE username = ‘%u‘ AND domain = ‘%d‘
125 user_query = SELECT maildir, 666 AS uid, 666 AS gid FROM vuser WHERE username = ‘%u‘
[root@mailwestos dovecot]# cd conf.d/
[root@mailwestos conf.d]# vim 10-mail.conf
30 mail_location = maildir:/home/vmail/%d/%n
168 first_valid_uid = 666
175 first_valid_gid = 666
[root@mailwestos conf.d]# systemctl restart dovecot.service
西部开源学习笔记BOOK3《unit 4.SMTP》