linux 邮件服务器

本文档详细介绍了如何在Linux系统上搭建邮件服务器,包括设置DNS服务、配置Postfix SMTP服务、Dovecot IMAP服务,以及使用MySQL数据库管理虚拟用户和邮箱。步骤涵盖从安装相关软件到设置邮件别名、群发、伪造域名,以及通过telnet测试邮件发送和接收,最终实现安全的邮件服务功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##################邮件服务器######################

邮件发送

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


vim /etc/postfix/main.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.

然后在数据库里面插入一组数据
最后打开雷鸟 新建用户
然后尝试发送邮件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值