邮件服务器搭建

电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些:
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。
Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。

一个最基础的电子邮件系统肯定要能提供发件服务和收件服务,为此需要使用基于SMTP协议的Postfix服务程序提供发件服务功能,并使用基于POP3协议的Dovecot服务程序提供收件服务功能。

1.开放端口

  • 25(SMTP服务,用于发送邮件)
  • 110(pop3服务,用于接收邮件)
  • 143(imap服务,用于接收邮件)

如果只想用pop3服务,那么我们只需要打开110和25端口即可,如果使用了ssl的话,pop3就需要开放465(发件) 995(收件)端口;imap就需要开放我们的465(发件) 993(收件)端口

firewall-cmd --add-port=25/tcp --permanent
firewall-cmd –-add-port=110/tcp --permanent
firewall-cmd --reload

2. 检查通信是否正常

检查我们的服务器能否telnet通我们要发送的一些邮件服务商的端口,比如qq,163,gmail等,如果不通的话需要更换服务器,因为此服务器商将这些给拦截了;

yum install -y telnet
telnet smtp.qq.com 25
正常情况

3. 移除sendmail

rpm -e sendmail 
或者 
yum remove sendmail

4.域名解析配置

服务器绑定域名

MX绑定域名

5.修改hostname【可选】

hostnamectl  set-hostname mail.okchinese.cn

6.修改MTA(默认邮件传输代理)

alternatives --config mta
#然后直接回车

检查是否设置成功

alternatives --display mta
#第一行可以看到mta的状态。mat - status is manual.就是ok了。

7.安装POSTFIX

postfix是提供发件服务的,在centos7里我们的postfix是系统自带的,但是centos7以前的版本是默认不带的,centos7版本以前是sendmail

7.1 安装:

yum install postfix

7.2 配置

vim /etc/postfix/main.cf
# 75行: 取消注释,设置hostname 
myhostname = mail.abc.com 
# 83行: 取消注释,设置域名 
mydomain = abc.com 
# 99行: 取消注释 
myorigin = $mydomain 
# 116行: 默认是localhost,我们需要修改成all
inet_interfaces = all 
# 119行: 推荐ipv4,如果支持ipv6,则可以为all 
inet_protocols = ipv4 
# 164行: 添加 
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 
# 264行: 取消注释,指定内网和本地的IP地址范围 
mynetworks = 127.0.0.0/8
# 419行: 取消注释,邮件保存目录
 home_mailbox = Maildir/ 
# 571行: 添加 
smtpd_banner = $myhostname ESMTP 
# 添加到最后 
# 规定邮件最大尺寸为10M 
message_size_limit = 10485760 
# 规定收件箱最大容量为1G 
mailbox_size_limit = 1073741824 
# SMTP认证 
smtpd_sasl_type = dovecot 
smtpd_sasl_path = private/auth 
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous 
smtpd_sasl_local_domain = $myhostname 
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject 

postfix服务程序主配置文件中的重要参数

参数 作用
myhostname 邮局系统的主机名
mydomain 邮局系统的域名
myorigin 从本机发出邮件的域名名称
inet_interfaces 监听的网卡接口
mydestination 可接收邮件的主机名或域名
mynetworks 设置可转发哪些主机的邮件
relay_domains 设置可转发哪些网域的邮件

7.3 开启postfix服务并添加到系统自启

systemctl  restart  postfix
systemctl  enable  postfix

8. dovecot

Dovecot服务程序提供收件服务功能

8.1 安装dovecot

yum install dovecot 

8.2 配置

  • dovecot.conf
vim /etc/dovecot/dovecot.conf 
# 26行: 如果不使用IPv6,请修改为* 
listen = *
#在主配置文件中的第48行,设置允许登录的网段地址,也就是说我们可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统。如果想允许所有人都能使用,则不用修改本参数
login_trusted_networks = 192.168.10.0/24更改内容
  • 10-auth.conf
vim /etc/dovecot/conf.d/10-auth.conf 
# 9行: 取消注释并修改 disable_plaintext_auth = no 
# 97行: 添加 auth_mechanisms = plain login 
  • 10-mail.conf
vim /etc/dovecot/conf.d/10-mail.conf
# 30行: 取消注释并添加 mail_location = maildir:~/Maildir
  • 10-master.conf
vim /etc/dovecot/conf.d/10-master.conf
# 88-90行: 取消注释并添加 # Postfix smtp验证 
unix_listener /var/spool/postfix/private/auth { 
  mode = 0666 
  user = postfix
  group = postfix
}

如果没有使用ssl的话需要进行下面的操作。使用了则不需要。

  • 10-ssl.conf
vim /etc/dovecot/conf.d/10-ssl.conf 
# 8行: 将ssl的值修改为 ssl = no

8.3启动dovecot并添加到开机自启

systemctl restart dovecot
systemctl enable dovecot

9. 创建用户

useradd admin
passwd admin

  • 如果我们查看日志发现 status=bounced ,那么就意味着qq的邮件服务器将我们这个服务器IP设为恶意IP,不接收这个IP发送的邮件。也就意味着如果我们要发邮件到qq邮箱的话,就需要更换服务器ip。
  • 如果要邮件服务器配置SSLcentos7邮件服务器SSL配置
    我们邮件服务器在设定mynetworks 这个值的时候,一行不要设置all,因为会有很多服务器会将你的服务器作为中转邮件服务器,最终导致的你的邮件服务器发送的邮件被qq,163,gamil,这些邮件服务商标记为垃圾邮件
  • 当某天我们检查我们的mail日志(/var/log/maillog)时发现很多邮件发送,而且邮件不是我们自己产生的话,那么我们的邮件服务器是出了问题的。这时我们服务器一定有很多邮件堆积,然后自己邮件会发不出去。
    我们需要做的操作:检查
    du -sh /var/spool/postfix/*
    查看目录下的deferdeferred的目录大小,通过postqueue –p来查看队列的邮件,通过postsuper -d ALL删除所有的队列邮件。
  • 屏蔽刷postfix的 IP脚本
#!/bin/bash

LOGFILE="/var/log/maillog"

#统计maillog中authentication failure的IP个数与IP
grep "authentication failure" $LOGFILE|awk '{print $7}'|grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"|sort|uniq -c > af_iplist.txt

#取出AF出现大于300次时的IP
awk '$1>300 {print $2}' af_iplist.txt > block_ip_list.txt

#大于300次AF的IP添加到iptables中
cat block_ip_list.txt|while read line
do
/sbin/iptables -nL | grep $line
if [ $? != 0 ]
then
   iptables -I INPUT -s $line -j DROP
fi
done



springboot推送邮件

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
spring:
  mail:
    host: mail.xxxx.com
    port: 25
    username: admin
    password: xxxxx
@Component
public class MailSendDemo {
    //在需要发件的地方注入JavaMailSender对象进行邮件的发送
    @Autowired
    private JavaMailSender jms;

    public void sendTextMail() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("xxxx@xxxxx.cn"); //发件人邮箱地址
        message.setTo("xxxxx@qq.com"); //收件人邮箱地址
        message.setSubject("会员开通提醒"); //标题
        message.setText("你在做梦"); //邮件内容
        jms.send(message);
    }
}
//启动Spring
@SpringBootTest(classes = MaildemoApplication.class)
public class SendTest {
    @Autowired
    MailSendDemo mailSendDemo;

    @Test
    void contextLoads() {
        mailSendDemo.sendTextMail();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,428评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,024评论 3 413
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,285评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,548评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,328评论 6 404
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,878评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,971评论 3 439
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,098评论 0 286
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,616评论 1 331
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,554评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,725评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,243评论 5 355
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,971评论 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,361评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,613评论 1 280
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,339评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,695评论 2 370

推荐阅读更多精彩内容