现在有一个内网的 gitlab ,需要一个邮件发送系统?但是这个服务器没有外网的 IP ,直接强上 postfix ,得到的是如下结果:
postfix/smtp[15249]: 0A6B61AE1151: to=<[email protected]>, relay=sample.com[x.x.x.x]:25, delay=917, delays=917/0.01/0.04/0, dsn=4.4.2, status=deferred (lost connection with xxx while receiving the initial server greeting)
似乎 relay 不对,然后我把 relay 改为我司的 exchange server 的 smtp ,然后返回需要 531 认证。似乎没有一个好办法能把邮箱发出去了?需要一个外部的不需要认证的 smtp relay server ?
对运维不熟,知道的麻烦提个醒,谢谢。
1
pubby 2016-04-21 20:53:42 +08:00
postfix 编译的时候记得加上 sasl 支持
可以支持需要认证的 smtp 进行 relay 的。 我就是 gitlab 通过 postfix 发信( relay 到阿里云的邮件推送服务) |
2
pubby 2016-04-21 21:00:03 +08:00
relayhost = [smtp.mail.server]:25
smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/path/to/sasl_passwd smtp_sasl_mechanism_filter = plain, login ------- sasl_passwd ------- [smtp.mail.server]:25 user:password 记得 postmap /path/to/sasl_passwd 跑一下生成 sasl_passwd.map 文件 |
3
mengjue OP 阿里云的推送是要收费的,如果要搞免费的,不知道 relay server 是否受到 relay server 的 smtp 的垃圾邮件的策略限制?
|
4
dynaguy 2016-04-22 13:14:07 +08:00
postfix 有点杀鸡牛刀了。装个 mailx , 配个用户账号就行了。
|
7
guoxu1231 2016-08-11 15:43:19 +08:00
@pubby 方便分享你的 postfix 配置吗?
我用了一个 postfix 的 docker 镜像, https://github.com/juanluisbaptiste/docker-postfix 更改了 relayhost = [$SMTP_SERVER]:587" 成 25 端口, 也尝试添加 smtp_sasl_mechanism_filter = plain, login, 但还是不成功. 提阿里云工单咨询客服人员, 客服人员的回答是 邮件推送(direct mail)目前不支持 smtp delay 的用法.... https://github.com/juanluisbaptiste/docker-postfix/blob/master/run.sh |
8
pubby 2016-08-11 16:40:42 +08:00
@guoxu1231 确保阿里云>邮件推送>发信地址 SMTP 密码设置之类的都 OK
main.cf: relayhost = [smtpdm.aliyun.com]:465 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd smtp_sasl_mechanism_filter = plain, login smtp_tls_loglevel = 1 smtp_use_tls = yes smtp_enforce_tls = yes # CA 文件如果没有的话,从另外的包安装一下 smtp_tls_CAfile = /usr/local/share/certs/ca-root-nss.crt smtp_sasl_security_options = smtp_sasl_tls_security_options = noanonymous smtp_tls_wrappermode = yes smtp_tls_security_level = encrypt sasl_passwd 文件: [smtpdm.aliyun.com]:465 [email protected]:阿里云 SMTP 设的密码 # 这个文件需要 postmap sasl_passwd 处理一下才能使用 # 测试 echo "test" |mail -s "test title" [email protected] 如果有问题的话,看 postfix 的日志,一般都能找到问题 |
9
guoxu1231 2016-08-12 00:25:20 +08:00
@pubby 似乎不太行, 报错.
(lost connection with smtpdm.aliyun.com[110.75.48.181] while receiving the initial server greeting) 客服的回复是: 售后工程师 : 您好,邮件推送并不是一个转发服务,不支持中继邮件,且通过调用邮件推送 smtp 接口发信需要有账户认证,中继可能会产生认证失败无法发送。 用 gmail 的 smtp relay 倒是一次就成功了. |
10
pubby 2016-08-12 00:56:12 +08:00
@guoxu1231 我这里可以
Aug 12 00:01:00 dev postfix/pickup[50246]: 773471B822: uid=1001 from=<pubby> Aug 12 00:01:00 dev postfix/cleanup[53100]: 773471B822: message-id=<[email protected]> Aug 12 00:01:00 dev postfix/qmgr[64627]: 773471B822: from=<[email protected]>, size=354, nrcpt=1 (queue active) Aug 12 00:01:01 dev postfix/smtp[53104]: Verified TLS connection established to smtpdm.aliyun.com[110.75.48.181]:465: TLSv1 with cipher AES256-SHA (256/256 bits) Aug 12 00:01:01 dev postfix/smtp[53104]: 773471B822: to=<[email protected]>, relay=smtpdm.aliyun.com[110.75.48.181]:465, delay=1.2, delays=0.33/0.26/0.53/0.08, dsn=2.0.0, status=sent (250 Data Ok: queued as freedom ###envid=82880264085) Aug 12 00:01:01 dev postfix/qmgr[64627]: 773471B822: removed 你要么再加上 sender 重写规则,把所有邮件发信人改写成你的阿里云邮件推送的发信地址 main.cf 里加上: sender_canonical_maps = pcre:/usr/local/etc/postfix/sender_canonical_map sender_canonical_map 内容: /.*/ [email protected] # 所有发件人都改写成 [email protected] # 同样需要 postmap sender_canonical_map 预处理一下这个文件 我这边确是也有这样的设置 |
11
guoxu1231 2016-08-13 12:08:49 +08:00
碰到了新的错误.
TLS is required, but was not offered by host smtpdm.aliyun.com[110.75.48.181] 可能目前阿里云邮件推送对于 SMTP 中继支持的还是不完善, 文档也没有任何提及. 不像 AWS 的 Simple Email Service, 在 FAQ 里明确提到了支持 SMTP 中继: Amazon SES 提供功能全面的 SMTP 接口,以实现与能够通过 SMTP 发送电子邮件的应用程序的无缝集成。 您可从应用程序直接连接至此 SMTP 接口,或将现有电子邮件服务器配置为使用此接口作为 SMTP 中继。 可将 Amazon SES 发送功能与 Sendmail 、 Postfix 和 Exim 等常用邮件传输代理 (MTA) 相集成。您甚至可从命令行连接到 SMTP 接口,直接发送 SMTP 命令. |