CentOS7搭建邮件服务器并用Foxmail和Java代码发送邮件
CentOS7搭建邮件服务器
环境准备
你只需要准备一台CentOS,接下来我们就开始吧
域名解析
有没有自己的域名都可以搭建邮件服务器,具体配置域名的方法见以下步骤
拥有自己的域名
首先我们需要解析一个 mail.域名
域名到你的服务器,如下图(IP地址填写自己的服务器IP地址):
然后我们还需要一个 @.域名
的mx记录到你设置的这个地址:
没有自己的域名
在没有自己的域名的情况下就需要修改 hosts
配置文件了,hosts文件的地址:
- Windows: C:\Windows\System32\drivers\etc\hosts
- Linux: /etc/hosts
需要将最后这一行添加到最后(xiaohh.love
是我自己的域名,你们可以用你们自己定义的域名):
# 注意修改IP地址
192.168.1.50 xiaohh.love mail.xiaohh.love
修改主机名字
执行以下代码修改主机名字
# 注意修改自己的域名
hostnamectl set-hostname mail.xiaohh.love
bash
安装Postfix
指向以下代码进行安装:
yum install -y postfix
安装dovect
使用命令进行安装
yum install -y dovecot
启动服务
安装完成后会自动新建一个 postfix
和 dovect
的服务,启动停止等相关命令
# 查看启动状态
systemctl status postfix
systemctl status dovecot
# 启动
systemctl start postfix
systemctl start dovecot
# 停止
systemctl stop postfix
systemctl stop dovecot
# 开机自启动
systemctl enable postfix
systemctl enable dovecot
# 取消开机自启动
systemctl disable postfix
systemctl disable dovecot
安装成功:
修改配置文件
需要修改以下配置文件
main.cf
使用下面命令修改配置文件
vim /etc/postfix/main.cf
修改的内容:
第75行的 myhostname
取消注释,并修改为自己解析的带 mail
的域名:
第83行的 mydomain
需要注释并修改为自己的域名,前面不带 mail
:
第99行的 myorigin
取消注释,并注意后面的值:
第113行取消注释,第116行加上注释,如图:
第164行加上注释,第165行取消注释,并注意 mydestination
的值应该为 $myhostname, localhost.$mydomain, localhost, $mydomain
:
第264行的 mynetworks
取消注释,并将后面的值修改为自己的IP网段地址(192.168.1.0是我自己的网段地址,注意修改):
取消第419行的注释:
第572行的 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_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
如图:
dovecot.conf
使用下面命令修改配置文件
vim /etc/dovecot/dovecot.conf
第30行 listen
取消注释,并注意值和我是否一样:
10-auth.conf
使用下面命令修改配置文件
vim /etc/dovecot/conf.d/10-auth.conf
第10行的 disable_plaintext_auth
取消注释,并将值改为no:
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
第90~92行取消注释,并修改对应的值如图:
代码如下:
unix_listener auth-userdb {
mode = 0666
user = postfix
group = postfix
}
10-ssl.conf
使用下面命令修改配置文件
vim /etc/dovecot/conf.d/10-ssl.conf
将第8行的 ssl
值修改为 no
,如图:
配置好后重启 postfix
和 dovecot
的服务
systemctl restart postfix
systemctl restart dovecot
暴露端口
我们需要暴露110和25端口,使用以下命令:
firewall-cmd --zone=public --add-port=25/tcp --permanent
firewall-cmd --zone=public --add-port=110/tcp --permanent
firewall-cmd --reload
或者你可以直接关闭防火墙
# 临时关闭
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld
创建用户并测试邮件服务器
创建用户并设置密码
# 创建用户
useradd xiaohh
passwd xiaohh
使用foxmail登录邮件服务器
先去下载foxmail,安装完成后打开,并点击其他邮箱:
点击手动设置:
新建账号如图(注意如果你是用的hosts解析的域名,那么在你的Windows电脑上也要配置hosts文件):
点击创建看到设置成功点完成即可:
然后登陆成功来到主界面,点击写邮件:
编写好一个邮件了点击发送:
来到我们的QQ邮箱,可以发现接收成功:
如果服务器是在外网,那么你同时也可以收邮件,但是受于反垃圾邮件的约束,一般云服务器不会给你开放用来发送邮件的25端口,也就是你只能用来收邮件(以阿里云为例):
Java代码链接自己搭建的邮箱服务器发送邮件
现在我们需要用Java代码发送邮件,首先我们搭建一个SpringBoot项目,其中各个文件的内容:
- pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>love.xiaohh</groupId>
<artifactId>email-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>email-test</name>
<description>email-test</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- application.yaml
server:
port: 8080
spring:
mail:
# 这里注意修改为你们自己的邮箱服务器地址还有用户名和密码
host: mail.xiaohh.love
username: xiaohh@xiaohh.love
password: *************
port: 25
protocol: smtp
default-encoding: UTF-8
- EmailTestApplication.java
package love.xiaohh.email;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class EmailTestApplication {
@Autowired
private JavaMailSender mailSender;
public static void main(String[] args) {
SpringApplication.run(EmailTestApplication.class, args);
}
@GetMapping("/sendEmail")
public String sendEmail() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
// 收邮件的地址注意修改
simpleMailMessage.setTo("**********@qq.com");
simpleMailMessage.setSubject("测试邮件");
simpleMailMessage.setText("来自Java的测试邮件");
simpleMailMessage.setFrom("XiaoHH");
mailSender.send(simpleMailMessage);
return "success";
}
}
然后我们尝试访问以下我们编写的这个控制器 http://127.0.0.1:8080/sendEmail
可以看到有内容返回:
查看邮箱的收件情况:
这样我们在代码中的使用自行搭建的邮箱服务器就成功了,代码下载地址:https://download.csdn.net/download/m0_51510236/87415771