azkaban 部署在阿里云环境上无法收发邮件,报错:connect time out
原因是azkaban发送邮件默认使用的是STMP 25端口,但是在阿里云上25端口是被禁用的. 所以需要将25端口换到465端口 采用SSL协议传输邮件(25端口是非SSl协议传输).
网上查了不少资料,都说需要改源码重新编译,觉得太麻烦,azkaban应该没有这么智障,一个网络端口还能给写死了?
在azkaban-common\src\main\java\azkaban\utils\EmailMessageCreator.java
里找到了如下代码:
public EmailMessageCreator(final Props props) {
this.mailHost = props.getString("mail.host", "localhost");
this.mailPort = props.getInt("mail.port", DEFAULT_SMTP_PORT);
this.mailUser = props.getString("mail.user", "");
this.mailPassword = props.getString("mail.password", "");
this.mailSender = props.getString("mail.sender", "");
this.tls = props.getString("mail.tls", "false");
this.usesAuth = props.getBoolean("mail.useAuth", true);
}
也就是说邮件服务的端口是可以通过在配置文件里的mail.port
配置的,到此问题解决。