热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

阿里云服务器坑之邮件无法发送

title:阿里云服务器坑之邮件无法发送tags:ecs25emailmail邮件发送失败categories:工作日志date:2017-12-1410:10:38背景随着F6规

title: 阿里云服务器坑之邮件无法发送 tags:

  • ecs
  • 25
  • email
  • mail
  • 邮件发送失败 categories: 工作日志 date: 2017-12-14 10:10:38

背景

随着F6规模的扩大 系统也是越做越多!最近也上了保险项目。出于部分机器分配考虑 ‘临时’将保险项目放置在jenkins服务器上【jenkins服务器是最新申请的机器】

由于放置在jenkins服务器上导致的问题 小伙伴可以阅读上一篇Jenkins小坑之执行Shell

本篇需要来说明一下关于邮件发送的坑!

问题

保险项目上线后 发现线上错误不会发送错误邮件 当时同期毕业的报表项目可以成功发送邮件!

由于我们目前使用QQ企业邮箱发送邮件 会发生发送频率过高导致被邮件发不出来。但是事实证明并没有!

于是调查logback的配置

<springProperty scope&#61;"context" name&#61;"myAppName" source&#61;"spring.application.name"defaultValue&#61;"zeus"/><springProperty scope&#61;"context" name&#61;"email.username" source&#61;"logging.email.username"defaultValue&#61;"***&#64;f6car.com"/><springProperty scope&#61;"context" name&#61;"email.password" source&#61;"logging.email.password"defaultValue&#61;"***"/><springProperty scope&#61;"context" name&#61;"email.from" source&#61;"logging.email.from"defaultValue&#61;"***&#64;f6car.com"/><springProperty scope&#61;"context" name&#61;"email.to" source&#61;"logging.email.to"defaultValue&#61;"***&#64;f6car.com"/><springProperty scope&#61;"context" name&#61;"email.subject" source&#61;"logging.email.subject"defaultValue&#61;"ZEUS-NOTICE-DEV-%m{30}"/><springProperty scope&#61;"context" name&#61;"email.smtp.host" source&#61;"logging.email.smtp.host"defaultValue&#61;"smtp.exmail.qq.com"/><springProperty scope&#61;"context" name&#61;"email.pattern" source&#61;"logging.email.pattern"defaultValue&#61;"%d [%level] [%thread] %logger{15}:%line %msg%n"/><springProperty scope&#61;"context" name&#61;"email.filter" source&#61;"logging.email.ThresholdFilter"defaultValue&#61;"ERROR"/><appender name&#61;"MAIL" class&#61;"ch.qos.logback.classic.net.SMTPAppender"><To>${email.to}To><username>${email.username}username><subject>${email.subject}subject><from>${email.from}from><Name>${email.smtp.host}Name><password>${email.password}password><SMTPHost>${email.smtp.host}SMTPHost><layout class&#61;"ch.qos.logback.classic.PatternLayout"><pattern>${email.pattern}pattern>layout><filter class&#61;"ch.qos.logback.classic.filter.ThresholdFilter"><level>${email.filter}level>filter>appender>

上述配置由于不同机器和环境会从springboot不同的profile读取

但是现状是测试环境均可以发送 但是生产环境无法发送&#xff01;

调查
  1. 首先考虑对应阿里云机器的网络

PING smtp.exmail.qq.com (163.177.72.143) 56(84) bytes of data.64 bytes from 163.177.72.143 (163.177.72.143): icmp_seq&#61;1 ttl&#61;50 time&#61;34.1 ms64 bytes from 163.177.72.143 (163.177.72.143): icmp_seq&#61;2 ttl&#61;50 time&#61;34.3 ms64 bytes from 163.177.72.143 (163.177.72.143): icmp_seq&#61;3 ttl&#61;50 time&#61;34.2 ms^C--- smtp.exmail.qq.com ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2002ms

 

  1. 证实网络是通的 同时由于该台服务器是jenkins服务器【由运维人员配置过jenkins发送邮件功能 可以成功发送邮件】
  2. 网络没有问题 那么有否可能端口被封呢&#xff1f;但是jenkins服务器可以发送邮件有如何解释&#xff1f;调查陷入了僵局
  3. 于是找到jenkins管理员账号查看邮箱设定
  4. 发现jenkins配置制定了端口号 但是我们的配置中没有端口号的指定
  5. 那么默认的端口号是啥呢&#xff1f;

public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {static InternetAddress[] EMPTY_IA_ARRAY &#61; new InternetAddress[0];// ~ 14 daysstatic final long MAX_DELAY_BETWEEN_STATUS_MESSAGES &#61; 1228800 * CoreConstants.MILLIS_IN_ONE_SECOND;long lastTrackerStatusPrint &#61; 0;long delayBetweenStatusMessages &#61; 300 * CoreConstants.MILLIS_IN_ONE_SECOND;protected Layout subjectLayout;protected Layout layout;private List> toPatternLayoutList &#61; new ArrayList>();private String from;private String subjectStr &#61; null;private String smtpHost;private int smtpPort &#61; 25;private boolean starttls &#61; false;private boolean ssl &#61; false;private boolean sessionViaJNDI &#61; false;private String jndiLocation &#61; CoreConstants.JNDI_COMP_PREFIX &#43; "/mail/Session";String username;String password;String localhost;boolean asynchronousSending &#61; true;private String charsetEncoding &#61; "UTF-8";protected Session session;protected EventEvaluator eventEvaluator;protected Discriminator discriminator &#61; new DefaultDiscriminator();protected CyclicBufferTracker cbTracker;private int errorCount &#61; 0;}

 

  1. 可以看到默认端口号是25 并且ssl是false

  2. 因此使用telnet确认是否25端口不通

  3. 但是同期的报表工程如下

  4. 很明显25端口在新的机器上无法使用&#xff01;&#xff01;&#xff01;

  5. 那么我们更换使用465端口

  6. 因此思路如下 我们在logback中增加对应配置用来设置端口和ssl

<springProperty scope&#61;"context" name&#61;"myAppName" source&#61;"spring.application.name"defaultValue&#61;"zeus"/><springProperty scope&#61;"context" name&#61;"email.username" source&#61;"logging.email.username"defaultValue&#61;"***&#64;f6car.com"/><springProperty scope&#61;"context" name&#61;"email.password" source&#61;"logging.email.password"defaultValue&#61;"***"/><springProperty scope&#61;"context" name&#61;"email.from" source&#61;"logging.email.from"defaultValue&#61;"***&#64;f6car.com"/><springProperty scope&#61;"context" name&#61;"email.to" source&#61;"logging.email.to"defaultValue&#61;"***&#64;f6car.com"/><springProperty scope&#61;"context" name&#61;"email.subject" source&#61;"logging.email.subject"defaultValue&#61;"ZEUS-NOTICE-DEV-%m{30}"/><springProperty scope&#61;"context" name&#61;"email.smtp.host" source&#61;"logging.email.smtp.host"defaultValue&#61;"smtp.exmail.qq.com"/><springProperty scope&#61;"context" name&#61;"email.smtp.port" source&#61;"logging.email.smtp.port"defaultValue&#61;"25"/><springProperty scope&#61;"context" name&#61;"email.ssl" source&#61;"logging.email.ssl"defaultValue&#61;"false"/><springProperty scope&#61;"context" name&#61;"email.pattern" source&#61;"logging.email.pattern"defaultValue&#61;"%d [%level] [%thread] %logger{15}:%line %msg%n"/><springProperty scope&#61;"context" name&#61;"email.filter" source&#61;"logging.email.ThresholdFilter"defaultValue&#61;"ERROR"/><appender name&#61;"MAIL" class&#61;"ch.qos.logback.classic.net.SMTPAppender"><To>${email.to}To><username>${email.username}username><subject>${email.subject}subject><from>${email.from}from><Name>${email.smtp.host}Name><password>${email.password}password><SMTPHost>${email.smtp.host}SMTPHost><SMTPPort>${email.smtp.port}SMTPPort><SSL>${email.ssl}SSL><layout class&#61;"ch.qos.logback.classic.PatternLayout"><pattern>${email.pattern}pattern>layout><filter class&#61;"ch.qos.logback.classic.filter.ThresholdFilter"><level>${email.filter}level>filter>appender>

 

  1. 默认值使用25和false 但是当部署在新机器上可以使用配置成465和true 这样就可以发送邮件
  2. 网上检索了 不止一个倒霉蛋碰到了此问题 www.100cm.cn/article-126…
  3. 阿里云官方说明help.aliyun.com/knowledge_d… 新的机器上默认禁止25端口&#xff01;&#xff01;&#xff01; 新的机器上默认禁止25端口&#xff01;&#xff01;&#xff01;新的机器上默认禁止25端口&#xff01;&#xff01;&#xff01;



推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 在尝试启动Java应用服务器Tomcat时,遇到了org.apache.catalina.LifecycleException异常。本文详细记录了异常的具体表现形式,并提供了有效的解决方案。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • 使用TabActivity实现Android顶部选项卡功能
    本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ... [详细]
  • protobuf 使用心得:解析与编码陷阱
    本文记录了一次在广告系统中使用protobuf进行数据交换时遇到的问题及其解决过程。通过这次经历,我们将探讨protobuf的特性和编码机制,帮助开发者避免类似的陷阱。 ... [详细]
  • 本文详细介绍了如何在Apache Kafka中进行Topic级别的配置,包括创建、修改和删除配置参数的具体步骤,并提供了详细的配置属性表。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • Android开发:巧妙运用ViewStub写出类似Tab选项卡
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • Linux环境下MySQL的安装与配置
    本文详细介绍了在Linux系统上安装和配置MySQL的步骤,包括安装前的准备工作、下载和解压安装包、初始化数据库、配置文件编辑、启动服务以及设置开机自启动等。 ... [详细]
  • CentOS7通过RealVNC实现多人使用服务器桌面
    背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&# ... [详细]
  • 本文介绍了如何使用开源工具ChkBugReport来解析和分析Android设备的Bugreport。ChkBugReport能够将复杂的Bugreport转换为易于阅读的HTML报告,并提供详细的图表和分析结论。 ... [详细]
author-avatar
tina田小甜Shirley
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有