使用 Docker 搭建适用于 HomeLab 的轻量邮件网关

使用 Node.js 快速验证服务功能

相比较使用客户端,我更喜欢使用代码来做快速验证。

这里为了方便描述,我使用 Node.js 写了一个非常简单的发信脚本:

'use strict'

const nodemailer = require('nodemailer')

async function main () {
  const { user, pass } = await nodemailer.createTestAccount()
  let transporter = nodemailer.createTransport({
    host: '0.0.0.0',
    port: 1025,
    auth: { type: 'login', user, pass }
  })

  // send mail with defined transport object
  let info = await transporter.sendMail({
    from: '\'Fred Foo \' ', // sender address
    to: '[email protected], [email protected]', // list of receivers
    subject: 'Hello ✔', // Subject line
    text: 'Hello world?', // plain text body
    html: 'Hello world?' // html body
  })

  console.log('Message sent: %s', info.messageId)
  // Message sent: 

  // Preview only available when sending through an Ethereal account
  console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info))
  // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}

main().catch(console.error)
将上面的代码保存为 example-sendmail.js,接着执行 node example-sendmail.js,顺利的话,我们将看到类似下面的日志输出:

接着,在浏览器中打开 http://0.0.0.0:1080,我们将看到 MailDev 的界面中多了一份意料之中的“邮件”,邮件正文正是我们上面写代码中的内容。

收到来信的 MailDev

在不进行额外的代码调整之前,我们多重复几次上面的发信操作,就可以模拟出日常学习和工作中各种应用的邮件通知发送场景。

此时,MailDev 的列表中就会实时展示新到的“邮件”了。

MailDev 的邮件列表

使用 Docker-Compose 启动服务
为了方便我的老读者们,让大家能够一起偷懒,按照惯例,我提供一个简单的容器编排配置文件

version: '3'

services:

  maildev:
    image: soulteary/maildev
    restart: always
    environment:
      - TZ=Asia/Shanghai
      - MAILDEV_WEB_PORT=1080
      - MAILDEV_SMTP_PORT=1025
    ports:
      - "1080:1080"
      - "1025:1025"

将上面的内容保存为 docker-compose.yml,接着使用 docker-compose up -d 启动应用,和上文提到的一样,我们就能够在浏览器中访问 http://localhost:1080 来浏览和管理“邮件内容”,并通过 1025 端口来进行邮件汇聚操作啦。

最后:

和之前提到过的其他的项目一样,接下来我将持续改进这个项目。短时间内,我希望它能够更好的支持 WebHook、并和一些消息推送软件进行打通,更好的支持我的 HomeLab 场景。

--EOF

你可能感兴趣的:(docker-images)