尝试使用docker-compose和nodemailer设置本地docker-mailserver
我正在尝试设置一个 docker-mailserver 实例以使用该nodemailer模块从我的本地开发设置中发送电子邮件。这是我的 docker-compose.yml 文件的样子:
version: '3.1'
services:
postgres:
container_name: postgres
image: postgres
restart: always
volumes:
- $PWD/.dbData:/data/db
networks:
- skynet
environment:
POSTGRES_PASSWORD: <PASSWORD>
POSTGRES_USER: <USER>
POSTGRES_DB: <DB>
mailserver:
image: docker.io/mailserver/docker-mailserver:latest
env_file: $PWD/mailserver.env
hostname: mailserver
domainname: example.com
container_name: mailserver
ports:
- "25:25"
- "143:143"
- "587:587"
- "993:993"
volumes:
- $PWD/.mailData/maildata:/var/mail
- $PWD/.mailData/mailstate:/var/mail-state
- $PWD/.mailData/maillogs:/var/log/mail
- /etc/localtime:/etc/localtime:ro
- ./config/:/tmp/docker-mailserver/
environment:
- ENABLE_SPAMASSASSIN=1
- SPAMASSASSIN_SPAM_TO_INBOX=1
- ENABLE_CLAMAV=1
- ENABLE_FAIL2BAN=1
- ENABLE_POSTGREY=1
- ENABLE_SASLAUTHD=0
- ONE_DIR=1
- DMS_DEBUG=0
cap_add:
- NET_ADMIN
- SYS_PTRACE
restart: always
networks:
- skynet
adminer:
image: adminer
hostname: adminer
ports:
- '8080:8080'
depends_on:
- postgres
networks:
- skynet
app:
# ... app details
networks:
skynet:
根据文档,我复制了示例mailserver.env文件和setup.sh管理脚本。当我尝试运行时docker-compose up -d,我在邮件服务器容器的 docker 日志中看到以下内容:
Jun 22 23:25:53 mailserver postfix/master[26133]: fatal: bind: private/proxywrite: Invalid argument
我认为这可能会导致问题,因为当我尝试使用 nodemailer(在同一台机器上)发送一条简单的消息时,如下所示:
const nodemailer = require('nodemailer')
let transporter = nodemailer.createTransport({
host: 'localhost', // <--- defaults to this anyway
port: 587,
})
const message = {
from: 'foo@example.com',
to: '<MY_PERSONAL_EMAIL>@gmail.com',
subject: 'YOUR CARS EXTENDED WARRANTY',
text: 'WEVE BEEN TRYING TO REACH YOU ABOUT YOUR CARS EXTENDED WARRANTY',
html: '<p>WEVE BEEN TRYING TO REACH YOU ABOUT YOUR CARS EXTENDED WARRANTY</p>',
}
transporter.sendMail(message).then(
() => {
console.log('success!')
},
(err) => {
console.error('=========== error occurred', err)
},
)
我收到以下错误:
error occurred Error: Unexpected socket close
at Timeout._onTimeout (/path/to/nodemailer-test/node_modules/nodemailer/lib/smtp-transport/index.js:189:31)
at listOnTimeout (internal/timers.js:551:17)
at processTimers (internal/timers.js:494:7)
任何帮助将不胜感激。
THE END
二维码