-
Azkaban发送邮件默认使用的是STMP 25端口,但是阿里云服务器25端口是被禁用的,所以需要将25端口换到465端口 采用smtps协议传输邮件(25端口是非SSl协议传输),方法是修改源码,具体如下:
-
git clone 下载Azkaban源码到服务器:
[root@boyi_bi azkaban]# git clone https://github.com/azkaban/azkaban.git
-
修改源码:
进入到修改目录下: [root@boyi_bi azkaban]# cd azkaban-common/src/main/java/azkaban/utils 找到EmailMessage.java文件,并使用vim编译器打开进行修改,在import语句添加一行: import java.security.Security; 在sendEmail()方法里props的配置代码下加入以下几行代码: Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.socketFactory.port", "465");
重新编译即可,Azkaban编译请参照此篇博客
邮件开启SMTP服务
- 配置第三方客户端发送邮件,需要开启SMTP服务,生成相应的授权码去代替密码登录,具体操作如下(以QQ邮箱为例):
登录到邮箱客户端,进入到设置-账户-SMTP服务:
记录最后生成的授权码,以用授权码登录。
修改Azkaban Web配置文件
-
修改web 目录下azkaban.properties:
[root@boyi_bi azkaban-web-server-3.80.0-7-gabf9ced]# vim conf/azkaban.properties
-
如下配置:
# mail settings mail.sender=xxxxx@qq.com mail.host=smtp.qq.com # 腾讯qq邮箱的host是:smtp.qq.com 腾讯企业邮箱host是:smtp.exmail.qq.com 126邮箱的host是:smtp.126.com 163邮箱的host是:smtp.163.com mail.user=xxxxx@qq.com mail.password=你的授权码 job.failure.email=xxxxx@qq.com #可添加,可不添加 job.success.email=xxxxx@qq.com #可添加,可不添加
完成后,启动Azkaban web 服务即可:
./bin/start-web.sh
验证发送不再细说,亲测有效。