解决项目部署到阿里云服务器邮件发送失败的方法

阿里云服务器禁用了25端口,所以改为465端口采用SSL协议传输邮件

163网易免费邮箱相关服务器信息:

 

相关代码:

 

package com.yc.util;


import java.io.File;
import java.util.Properties;
import java.util.Random;


import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.servlet.http.HttpSession;


public class SendEmailUtil
{
   public  int sendEmail(String reperson,HttpSession sessions)
  
   {
	   int result=0;
	      // 收件人电子邮箱
	      String to = reperson;
	 
	      // 发件人电子邮箱
	      String from = "你的真实邮箱地址";
	 
	      // 指定发送邮件的主机为 smtp.qq.com
	      String host = "smtp.163.com";  //163邮件服务器
	 
	      // 获取系统属性
	      Properties properties = System.getProperties();
	 
	      // 设置邮件服务器
	      properties.setProperty("mail.smtp.host", host);
	 
	      properties.put("mail.smtp.auth", "true");
		  
		  
		  //阿里云服务器禁用25端口,所以服务器上改为465端口
	     properties.put("mail.smtp.socketFactory.port", "465");
	     properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
	     properties.setProperty("mail.smtp.socketFactory.fallback", "false");
	     properties.setProperty("mail.smtp.socketFactory.port", "465");


		  
		  
	      // 获取默认session对象
	       Session session = Session.getDefaultInstance(properties,new Authenticator(){
	        public PasswordAuthentication getPasswordAuthentication()
	        {
	         return new PasswordAuthentication("你的真实邮箱地址", "你的真实密码"); //发件人邮件用户名、密码
	        }
	       });
	 
	      try{
	         // 创建默认的 MimeMessage 对象
	         MimeMessage message = new MimeMessage(session);
	 
	         // Set From: 头部头字段
	         message.setFrom(new InternetAddress(from));
	 
	         // Set To: 头部头字段
	         message.addRecipient(Message.RecipientType.TO,
	                                  new InternetAddress(to));
	 
	         // Set Subject: 头部头字段
	         message.setSubject("注册论坛网验证码");
	 
	         // 设置消息体
			  Random rand=new Random();
			  String txt=String.valueOf(rand.nextInt(9000)+1000);
			  sessions.setAttribute("yanzhengma",txt);
			  message.setText("你好"+reperson+"!  欢迎注册论坛网。验证码为:"+txt);
	
	         // 发送消息
	         Transport.send(message);
	     
	         result=1;
	      }catch (MessagingException mex) {
	         mex.printStackTrace();
	      }
	      return result;
	   }
 
}

 

贴上以上的代码以为可以发送,在本地电脑可以发送,在服务器上仍然发送失败,查看输出日志后才发现报的是以下的错误:

 

解决方法:在/etc/hosts中添加127.0.0.1本地映射

1.在linux终端输入  hostname

2.打开/etc/hosts编辑添加一行  127.0.0.1  iZwz9dgm0ak5eyqrkwypkjZ

3.再输入  hostname -i

 

解决以上问题,终于可以发送邮件啦!欢迎关注下方公众号,一起交流,期待你的到来

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考:https://www.cnblogs.com/hoojjack/p/8025284.html

https://www.cnblogs.com/FLFL/p/6476358.html

https://blog.youkuaiyun.com/zhangyunfei_happy/article/details/56276206

<think>好的,我现在需要帮助用户解决阿里云ECS服务器上配置邮件服务器的问题。首先,我得回顾一下用户提供的引用内容,看看有没有相关的信息。引用[1]提到用户遇到了邮件发送失败的问题,无法连接发送邮箱的服务器。这可能涉及到邮件服务器的配置问题,比如SMTP设置、端口开放等。引用[2]和[3]主要讲的是在阿里云ECS上部署SpringBoot项目、安装JDK、MySQL和Nginx,这些可能和邮件服务器没有直接关联,但安装依赖软件的经验可能会有帮助。引用[4]是关于ECS实例的创建过程,说明用户已经有服务器,需要配置邮件服务。 接下来,我需要思考如何在阿里云ECS上配置邮件服务器。通常,搭建邮件服务器需要考虑以下几个步骤:安装邮件服务软件(如Postfix、Dovecot)、配置DNS记录(MX、SPF、DKIM等)、设置安全组规则开放相关端口(SMTP的25、465,IMAP的143、993等)、配置SSL证书加密通信,以及可能的反垃圾邮件措施。此外,阿里云默认可能封锁了某些端口,比如25端口,需要申请解封,这一点可能在用户的问题中出现过,如引用[1]中的发送失败可能就是因为端口被封。 然后,我需要考虑用户可能的疑问点。例如,如何安装和配置Postfix,如何设置DNS记录,如何处理阿里云的安全组设置,以及如何测试邮件服务器是否正常工作。可能还需要提到使用第三方服务如SendGrid或者阿里云邮件服务作为替代方案,因为自建邮件服务器可能会遇到投递问题,被标记为垃圾邮件等。 另外,根据引用[3]中提到的Nginx安装,用户可能对服务器软件安装有一定经验,可以类比指导邮件服务器的安装步骤。需要注意的是,邮件服务器的配置较为复杂,涉及到多个组件和安全性设置,需要详细说明每一步骤,避免遗漏关键点,比如DNS配置或SSL证书申请。 最后,用户可能需要了解常见问题及解决方法,比如如何测试SMTP服务,查看日志文件,以及如何处理端口被封的情况。需要确保提供的步骤清晰,并提醒用户注意安全和反垃圾邮件的策略,避免服务器被滥用或邮件被拦截。</think>### 如何在阿里云ECS服务器上配置邮件服务器? #### 1. 准备工作 - **ECS实例要求**:确保ECS实例已创建并运行(参考实例创建步骤[^4]),且操作系统为Linux(如CentOS或Ubuntu)。 - **安全组配置**:在阿里云控制台开放邮件服务相关端口(SMTP默认25/465/587,IMAP 143/993,POP3 110/995)[^1],注意阿里云默认屏蔽25端口,需提交工单申请解封。 - **域名准备**:拥有一个已备案的域名,并配置DNS解析(MX记录指向服务器IP)。 #### 2. 安装邮件服务器软件 推荐使用 **Postfix(SMTP服务) + Dovecot(IMAP/POP3服务) + Roundcube(Web邮箱客户端)** 组合。 **步骤示例(以CentOS 7为例)**: ```bash # 安装Postfix和Dovecot sudo yum install postfix dovecot cyrus-sasl-plain mailx # 启动服务 sudo systemctl start postfix sudo systemctl enable postfix sudo systemctl start dovecot sudo systemctl enable dovecot ``` #### 3. 配置Postfix(SMTP服务) - **主配置文件**:`/etc/postfix/main.cf` ```bash # 修改以下参数 myhostname = mail.yourdomain.com # 替换为你的域名 mydomain = yourdomain.com myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain home_mailbox = Maildir/ smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination ``` - 重启服务:`sudo systemctl restart postfix` #### 4. 配置Dovecot(IMAP/POP3服务) - **配置文件**:`/etc/dovecot/dovecot.conf` ```bash # 启用协议 protocols = imap pop3 lmtp # 配置邮件存储路径 mail_location = maildir:~/Maildir # 启用SSL(需提前申请证书) ssl = required ssl_cert = </etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.yourdomain.com/privkey.pem ``` - 重启服务:`sudo systemctl restart dovecot` #### 5. 配置DNS记录 - **MX记录**:指向邮件服务器域名(如`mail.yourdomain.com`)。 - **SPF记录**:`TXT`类型,值为`v=spf1 mx -all`。 - **DKIM记录**:通过OpenDKIM生成公钥并添加到DNS。 #### 6. 测试邮件服务 ```bash # 发送测试邮件 echo "Test email" | mail -s "Test Subject" user@example.com # 查看邮件日志 tail -f /var/log/maillog ``` #### 7. 可选:Web邮箱客户端 安装Roundcube: ```bash sudo yum install epel-release sudo yum install roundcubemail ``` 配置Nginx反向代理(参考Nginx安装步骤[^3])。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值