docker smtp 服务
背景
halo博客的smtp服务无法直接使用mailjet、sendgrid等服务,因为1.4.5版本的halo使用邮箱账号作为api user name。故而想到通过docker smtp中继第三方smtp服务。
docker smtp 服务使用
由于云服务器一般是不允许你自己搭建smtp服务器的,这里使用了docker smtp中继mailjet服务。
从dockerhub拉取最新的smtp服务
docker pull namshi/smtp
编辑并smtp.sh脚本
#/bin/bash
name="smtp"
docker rm -f $name
docker run --restart=always -d \
-v $(pwd)/:/root/docker_sh \
-e "RELAY_NETWORKS=:0.0.0.0/0" \
-e "KEY_PATH=/root/docker_sh/privkey.pem" \
-e "CERTIFICATE_PATH=/root/docker_sh/fullchain.pem" \
-e "SMARTHOST_ADDRESS=in-v3.mailjet.com" \
-e "SMARTHOST_PORT=587" \
-e "SMARTHOST_USER=YOUR MAILJET API USERNAME" \
-e "SMARTHOST_PASSWORD=YOUR MAILJET API PASSWORD" \
-e "SMARTHOST_ALIASES=*.example.com" \
--name $name \
-p 10025:25 \
namshi/smtp
执行脚本
sh smtp.sh
存在的问题
似乎由于收信方拒绝了我们的请求导致无法发出去,暂时未能解决。
296 SMTP>> MAIL FROM:<noreply@example.com> SIZE=2038
296 SMTP>> RCPT TO:<example@qq.com>
296 SMTP>> DATA
296 SMTP<< 250 2.1.0 Ok
296 SMTP<< 454 4.7.1 <example@qq.com>: Relay access denied
296 SMTP<< 554 5.5.1 Error: no valid recipients
296 SMTP>> QUIT
最终解决方案
去halo提issue,新增一个Api Username配置项。