docker smtp 服务

747

背景

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配置项。