配置电子邮件传输+mariadb
1.首先配置两台虚拟机,名字改为mailwestos.westos.com和maillinux.linux.comip分别设置为172.25.254.119和172.25.254.219yum 源配置好。2.配置dns在mailwestos主机上:yum install bind -y[root@mailwestos ~]# vim /etc/named.conf//
1.首先配置两台虚拟机,
名字改为mailwestos.westos.com和maillinux.linux.com
ip分别设置为172.25.254.119和172.25.254.219
yum 源配置好。
2.配置dns
在mailwestos主机上:yum install bind -y
[root@mailwestos ~]# vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// allow-query { localhost; };
root@mailwestos ~]# cd /var/named
[root@mailwestos named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@mailwestos 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; };
};
[root@mailwestos named]# cp -p named.localhost westos.com.zone
[root@mailwestos named]# vim 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.119
westos.com. MX 1 172.25.254.119.
[root@mailwestos named]# cp -p westos.com.zone linux.com.zone //注意 -p
[root@mailwestos named]# vim 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.119
linux.com. MX 1 172.25.254.219.
~
[root@mailwestos named]# systemctl restart named
[root@mailwestos named]# vim /etc/resolv.conf
nameserver 172.25.254.119
[root@mailwestos named]# dig -t mx westos.com
2.发送邮件
直接mail root@linux.com时,会显示无法发送,linux(172.25.254.219)的25 端口没有打开
[root@mailwestos named]# netstat -antlpe | grep 25 //查看25端口是否开启
[root@mailwestos named]# rpm -qa | grep postfix //查看邮件服务协议是否安装
[root@mailwestos named]# vim /etc/postfix/main.cf
76 myhostname = mailwestos.westos.com
83 mydomain = westos.com
99 myorigin = $mydomain
113 inet_interfaces = all
116 #inet_in164 mydestination = $myhostname, $mydomain, localhost
terfaces = localhost
164 mydestination = $myhostname, $mydomain, localhost
:wq
[root@mailwestos named]# systemctl restart postfix.service
[root@mailwestos named]# systemctl stop firewalld.service
在linux(219)主机上做同样的配置改动
[root@mailwestos named]# systemctl stop firewalld.service
[root@mailwestos ~]# mail admin@linux.com
Subject: test
test
ddd
.
EOT
可以发送成功!
mail //查看接受的邮件
mailq //查看邮件是否发出
postqueue -f //邮件队列刷新
> /var/spool/mail/root //清空邮件队列
3.空壳邮件客户端
[root@maillinux ~]# vim /etc/aliases
在最后添加:admin: root
[root@maillinux ~]# postmap /etc/aliases
[root@maillinux ~]# systemctl restart postfix.service
[root@maillinux ~]#postsuper -d 邮件编号(50CBD3260) //删除邮件
[root@mailwestos ~]#mail admin@linux.com
编辑邮件
[root@maillinux ~]#mail
在linux主机查看邮件时可以发现实际上时发给了root用户
4.群发邮件
[root@mailwestos ~]# vim /etc/aliases
添加:more: :include:/etc/postfix/users
[root@mailwestos ~]# vim /etc/postfix/users
root
student
[root@mailwestos ~]# postalias /etc/aliases
[root@mailwestos ~]# systemctl restart postfix.service
[root@maillinux ~]# mail more@westos.com
[root@mailwestos ~]# mail
[root@mailwestos ~]# mail -u student
5.企业级邮箱(虚拟邮箱)
(1)
[root@maillinux ~]# vim /etc/postfix/virtual
添加:admin@qq.com root@linux.com
[root@maillinux ~]# postmap /etc/postfix/virtual
[root@maillinux ~]# ls /etc/postfix/
access generic main.cf relocated virtual
canonical header_checks master.cf transport virtual.db
[root@maillinux ~]# postconf -d | grep virtual
[root@maillinux ~]# postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"
[root@maillinux ~]# mail admin@qq.com
[root@mailwestos ~]# mail
可以在westos主机上查看到实际上发给了root@linux.com
[root@maillinux ~]# vim /etc/postfix/virtual
添加:@qq.com @linux.com //虚拟的在前面,真实的在后面
[root@maillinux ~]# postmap /etc/postfix/virtual
[root@maillinux ~]# postconf -d | grep virtual //为了找到virtual_alias_maps =
[root@maillinux ~]# postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"
[root@maillinux ~]# mail student@qq.com //任意用户
(2)
自己主机可以接受虚拟域名的邮件:
[root@maillinux ~]# mail -u student
Message 1:
From root@linux.com Fri Mar 10 22:42:45 2017
Return-Path: <root@linux.com>
X-Original-To: student@qq.com
Delivered-To: student@linux.com
//可以看到实际上是发给了student@linux.com
(3)
其他主机给虚拟域名(qq.com)发送邮件本来是不能发送的,配置以下服务就可以给他及虚拟域名发送邮件
[root@mailwestos ~]# mail root@qq.com
[root@mailwestos ~]# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
4F8AD17E863 452 Sat Mar 11 00:43:26 root@westos.com
(Host or domain name not found. Name service error for name=qq.com type=MX: Host not found, try again)
root@qq.com
-- 0 Kbytes in 1 Request.
[root@mailwestos ~]# vim /etc/named.rfc1912.zones
添加:
zone "qq.com" IN {
type master;
file "qq.com.zone";
allow-update { none; };
};
[root@mailwestos named]# cd /var/named
[root@mailwestos named]# ls
data linux.com.zone named.empty named.loopback westos.com.zone
dynamic named.ca named.localhost slaves
[root@mailwestos named]# cp -p linux.com.zone qq.com.zone
[root@mailwestos named]# vim qq.com.zone
$TTL 1D
@ IN SOA qq.com. root.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.qq.com.
dns A 172.25.254.119
qq.com. MX 1 172.25.254.219.
~
[root@mailwestos named]# systemctl restart named
[root@mailwestos named]# postqueue -f
[root@mailwestos named]# mailq
[root@mailwestos named]# systemctl restart postfix.service
配置之后就可以发送过去,完全实现了企业级邮箱,建立了虚拟邮箱
(4)
实现以以虚拟域名为发送域名发送邮件,即就是在接受端看见发送者时虚拟域名:
root@maillinux ~]# postmap /etc/postfix/generic
在最后添加:@linux.com @qq.com //真实的写在前面,虚拟的卸载后面
postmap /etc/postfix/generic
[root@maillinux ~]# postconf -d| grep generic //为了找到smtp_generic_maps =
[root@maillinux ~]# postconf -e "smtp_generic_maps = hash:/etc/postfix/generic"
[root@maillinux ~]# systemctl restart postfix.service
效果:
[root@maillinux ~]# mail root@westos.com
Subject: hhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhh
.
EOT
[root@mailwestos named]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 11 messages 4 unread
1 root Fri Mar 10 21:43 23/752 "test"
2 root Fri Mar 10 21:57 24/782
3 Mail Delivery System Fri Mar 10 22:17 77/2509 "Undelivered Mail Retu"
4 root Fri Mar 10 22:21 19/582 "oooooo"
5 root Fri Mar 10 22:22 22/768 "pppppppppppp"
>U 6 root Fri Mar 10 22:25 19/574 "kkkkkkk"
7 root Fri Mar 10 22:27 26/903 "hhhhhhhh"
U 8 root Sat Mar 11 00:55 23/752 "jhkfahd"
U 9 root Sat Mar 11 00:57 21/732
10 root Sat Mar 11 01:00 23/743 "adsf"
U 11 root Sat Mar 11 01:01 22/761 "hhhhhhhhhhhhhhhhhh"
& 11
Message 11:
From root@qq.com Sat Mar 11 01:01:51 2017
Return-Path: <root@qq.com>
X-Original-To: root@westos.com
Delivered-To: root@westos.com
Date: Sat, 11 Mar 2017 01:01:51 -0500
To: root@westos.com
Subject: hhhhhhhhhhhhhhhhhh
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@qq.com (root)
Status: RO
hhhhhhhhhhhhhh
& q
New mail has arrived.
Held 11 messages in /var/spool/mail/root
You have mail in /var/spool/mail/root
6.在另一台主机上实现远程发送邮件和远程登陆邮件
在60主机上:
[root@foundation60 Desktop]# yum install telnet
[root@foundation60 Desktop]# systemctl start telnet
[root@foundation60 Desktop]# telnet 172.25.254.119 25
Trying 172.25.254.119...
Connected to 172.25.254.119.
Escape character is '^]'.
220 mailwestos.westos.com ESMTP Postfix
ehlo hello //打招呼
250-mailwestos.westos.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:root@qq.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>
jijijijiji
jijijiji
jiiji
.
250 2.0.0 Ok: queued as A4C3B17E859
q
502 5.5.2 Error: command not recognized
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@mailwestos ~]# mail
可以在客户端主机上查看到邮件 /
但是在远程主机未配置接受邮件的服务,还不能在远程主机上接受邮件,客户端配置如下配置如下:
7.远程接受邮件;
在客户端:
[root@mailwestos ~]# yum install dovecot
[root@mailwestos ~]# systemctl start dovecot
[root@mailwestos ~]# netstat -antlpe | grep dovecot
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 0 207079 1486/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 0 207055 1486/dovecot
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 0 207053 1486/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 0 207077 1486/dovecot
tcp6 0 0 :::993 :::* LISTEN 0 207080 1486/dovecot
tcp6 0 0 :::995 :::* LISTEN 0 207056 1486/dovecot
tcp6 0 0 :::110 :::* LISTEN 0 207054 1486/dovecot
tcp6 0 0 :::143 :::* LISTEN 0 207078 1486/dovecot
[root@mailwestos ~]# vim /etc/dovecot/dovecot.conf
24 protocols = imap pop3 lmtp
48 login_trusted_networks = 0.0.0.0
49 disable_plaintext_auth = no
[root@mailwestos ~]# cd /etc/dovecot/conf.d/
[root@mailwestos conf.d]# ls
10-auth.conf 90-plugin.conf
10-director.conf 90-quota.conf
10-logging.conf auth-checkpassword.conf.ext
10-mail.conf auth-deny.conf.ext
10-master.conf auth-dict.conf.ext
10-ssl.conf auth-ldap.conf.ext
15-lda.conf auth-master.conf.ext
15-mailboxes.conf auth-passwdfile.conf.ext
20-imap.conf auth-sql.conf.ext
20-lmtp.conf auth-static.conf.ext
20-pop3.conf auth-system.conf.ext
90-acl.conf auth-vpopmail.conf.ext
[root@mailwestos conf.d]# vim 10-mail.conf
[root@mailwestos conf.d]# systemctl restart dovecot.service
30 mail_location = mbox:~/mail:INBOX=/var/mail/%u
[root@mailwestos conf.d]# su - student
[student@mailwestos ~]$ mkdir mail
[student@mailwestos ~]$ ls
[student@mailwestos ~]$ cd mail
[student@mailwestos mail]$ mkdir /home/student/mail/.imap
[student@mailwestos mail]$ touch /home/student/mail/.imap/INBOX
在远程主机端:
[root@foundation60 Desktop]# yum install mutt -y
[root@foundation60 Desktop]# systemctl start mutt
[root@foundation60 Desktop]# mutt -f pop://student@172.25.254.119
远程登陆就可以查看到客户端主机上的邮件
8.配置开机就可以自动创建:/home/student/mail/.imap/INBOX
[root@mailwestos ~]# cd /etc/skel
[root@mailwestos skel]# ls
[root@mailwestos skel]# mkdir mail
[root@mailwestos skel]# cd mail
[root@mailwestos mail]# mkdir .imap
[root@mailwestos mail]# touch .imap/INBOX
[root@mailwestos mail]# ll -l /etc/skel/mail/.imap/INBOX
-rw-r--r--. 1 root root 0 Mar 11 01:57 /etc/skel/mail/.imap/INBOX
[root@mailwestos mail]# useradd test
[root@mailwestos mail]# passwd test
Changing password for user test.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@mailwestos mail]# su - test
[test@mailwestos ~]$ ls
9.posrfix客户端接受邮件+mysql的相关配置+php:
[test@mailwestos ~]$ yum install mariadb-server httpd php php-mysql
[root@mailwestos test]# systemctl start mariadb
[root@mailwestos test]# vim /etc/my.cnf
# instructions in http://fedoraproject.org/wiki/Systemd
skip-networking=1
[mysqld_safe]
[root@mailwestos test]# mysql_secure_installation
设置mysql客户端root用户登陆的密码
[root@mailwestos test]# systemctl restart mariadb.service
root@mailwestos test]# cd /var/www/html/
lftp 172.25.254.250:/pub/docs/software> get phpMyAdmin-3.4.0-all-languages.tar.bz2
4548030 bytes transferred
[root@mailwestos html]# tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2
[root@mailwestos html]# mv phpMyAdmin-3.4.0-all-languages/ mysqladmin
[root@mailwestos html]# cd mysqladmin/
[root@mailwestos mysqladmin]# ls
[root@mailwestos mysqladmin]# cp config.sample.inc.php config.inc.php
[root@mailwestos mysqladmin]# vim config.inc.php
17 $cfg['blowfish_secret'] = 'westos'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
[root@mailwestos mysqladmin]# systemctl restart httpd
[root@mailwestos mysqladmin]# mysql -uroot -p
MariaDB [(none)]> CREATE USER postfix@localhost identified by 'postfix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT INSERT.SELECT on email.* to postfix@localhost;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT.SELECT on email.* to postfix@localhost' at line 1
MariaDB [(none)]> GRANT INSERT,SELECT on email.* to postfix@localhost;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
[root@mailwestos mysqladmin]# mysql -upostfix -ppostfix
[root@mailwestos mysqladmin]# cd /etc/postfix
[root@mailwestos postfix]# ls
access generic main.cf relocated users
canonical header_checks master.cf transport virtual
[root@mailwestos postfix]# vim mysql-user.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = mailusers
select_field = username
where_field = username
~
[root@mailwestos postfix]# cp mysql-user.cf mysql-domain.cf
[root@mailwestos postfix]#vim mysql-domail.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = mailusers
select_field = domain
where_field = domain
~
[root@mailwestos postfix]# cp mysql-user.cf mysql-mailbox.cf
[root@mailwestos postfix]# vim mysql-mailbox.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = mailusers
select_field = maildir
where_field = username
~
[root@mailwestos postfix]# postmap -q "redhat.com" mysql:/etc/postfix/mysql-domain.cf
redhat.com
[root@mailwestos postfix]# postmap -q "admin@redhat.com" mysql:/etc/postfix/mysql-mailbox.cf
/var/spool/redhat.com/admin
[root@mailwestos postfix]# postmap -q "admin@redhat.com" mysql:/etc/postfix/mysql-user.cf
admin@redhat.com
[root@mailwestos postfix]# groupadd -g 888 vmail
[root@mailwestos postfix]# useradd -u 888 -g 888 vmail
[root@mailwestos postfix]# cd /home/vmail/
[root@mailwestos vmail]# postconf -d | grep virtual
[root@mailwestos vmail]# postconf -e "virtual_mailbox_base = /home/vmail"
[root@mailwestos vmail]# postconf -e "virtual_gid_maps = static:888"
[root@mailwestos vmail]# postconf -e "virtual_uid_maps = static:888"
[root@mailwestos vmail]# postconf -e "virtual_alias_maps = mysql:/etc/postfix/mysql-user.cf"
[root@mailwestos vmail]# postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/mysql-domain.cf"
[root@mailwestos vmail]# postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/mysql-maildir.cf"
[root@mailwestos vmail]# vim /etc/postfix/main.cf
679 readme_directory = /usr/share/doc/postfix-2.10. 1/README_FILES
680 virtual_gid_maps = static:666
681 virtual_uid_maps = static:666
682 virtual_alias_maps = mysql:/etc/postfix/mysql-u ser.cf
683 virtual_mailbox_domains = mysql:/etc/postfix/my sql-domain.cf
684 virtual_mailbox_maps = mysql:/etc/postfix/mysql -mailbox.cf
685 virtual_mailbox_base = /home/vmail
[root@mailwestos ~]# cd /home/vmail
[root@mailwestos vmail]# mail admin@redhat.com
Subject: jjjjjjjjjjjjjjjjj
dddddddddddd
ccccccccc
.
EOT
[root@mailwestos vmail]# mailq
Mail queue is empty
[root@mailwestos vmail]# cd /home/
[root@mailwestos home]# ls
student vmail
[root@mailwestos home]# cd vmail/
[root@mailwestos vmail]# ls
redhat.com
[root@mailwestos vmail]# cd redhat.com/
[root@mailwestos redhat.com]# ls
admiin admin
[root@mailwestos redhat.com]# rm -fr admiin/
[root@mailwestos redhat.com]# cd a
-bash: cd: a: No such file or directory
[root@mailwestos redhat.com]# cd admin/
[root@mailwestos admin]# ls
cur new tmp
[root@mailwestos admin]# cd new/
[root@mailwestos new]# ls
1489737773.Vfd01I136fc76M994432.mailwestos.westos.com
[root@mailwestos new]# cat 1489737773.Vfd01I136fc76M994432.mailwestos.westos.com
可以查看到传到mysql数据库中的邮件内容
10.thundebird的使用以及查看数据库收件箱:
[root@mailwestos ~]#systemctl stop firewalld.service
[root@mailwestos ~]#systemctl restart httpd
[root@mailwestos ~]#systemctl start mariadb
[root@mailwestos ~]# yum list dovecot
[root@mailwestos ~]#vim /etc/dovecot/dovecot.conf
48 login_trusted_networks = 0.0.0.0/0 //允许访问网络地址
49 disable_plaintext_auth = no //开始明文认证
[root@mailwestos vmail]# vim /etc/dovecot/conf.d/10-auth.conf
123 !include auth-sql.conf.ext
[root@mailwestos vmail]# ll /etc/dovecot/dovecot-sql.conf.ext
ls: cannot access /etc/dovecot/dovecot-sql.conf.ext: No such file or directory
[root@mailwestos vmail]# cp /usr/share/doc/dovecot-2.2.10/example-config/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext
[root@mailwestos ~]# 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 mailusers WHERE username = '%u' AND domain = '%d'
125 user_query = SELECT maildir, 666 AS uid, 666 AS gid FROM mailusers WHERE use rname = '%u'
[root@mailwestos ~]# vim /etc/dovecot//conf.d/10-mail.conf
30 mail_location = maildir:/home/vmail/%d/%n
在另一主机:
[root@foundation60 Desktop]# telnet 172.25.254.119 110
Trying 172.25.254.119...
Connected to 172.25.254.119.
Escape character is '^]'.
+OK [XCLIENT] Dovecot ready.
user admin@redhat.com
+OK
pass 234
+OK Logged in.
quit
同时在主机安装thunderbird并启动
验证成功后可以在thunderbird的收件箱上查看到postfix上的邮
件更多推荐
所有评论(0)