GithubHelp home page GithubHelp logo

nodemailer / wildduck-dockerized Goto Github PK

View Code? Open in Web Editor NEW
95.0 8.0 24.0 81 KB

Wildduck: dockerized - ๐Ÿฆ†+๐Ÿ‹=โค

License: GNU General Public License v3.0

Dockerfile 18.49% Shell 81.51%
docker wildduck email mailserver zonemta rspamd haraka

wildduck-dockerized's Introduction

Wildduck: dockerized - ๐Ÿฆ†+๐Ÿ‹=โค

The default docker-compose file will set up:

Service Why
WildDuck IMAP, POP3
WildDuck Webmail Webmail, creating accounts,
editing account settings
ZoneMTA Outbound smtp
Haraka Inbound smtp
Rspamd Spam filtering
Traefik Reverse proxy with automatic TLS
MongoDB Database used by most services
Redis Key-value store used by most services

For the default docker-compose file to work without any further setup, you need port 80/443 available for Traefik to get certificates. However, the compose file is not set in stone. You can remove Traefik from the equation and use your own reverse proxy (or configure the applications to handle TLS directly), remove certain services, etc.

No STARTTLS support, only SSL/TLS.

Set up Docker

Install Docker:

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sh get-docker.sh

Install docker-compose

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

Deploy Wildduck: dockerized

Create a new directory and run the setup docker image. The image only copies the default config folder, .env, docker-compose.yml, and edits them for your domain. It does not install anything on the host system.

The setup image takes 1-2 arguments. The domain for your email (e.g example.com), and the hostname where your mail server will be (e.g mail.example.com). They can be the same host, if you host your website on the same server for example.

$ mkdir wildduck-dockerized
$ cd wildduck-dockerized
$ docker run --rm -v "${PWD}:/wildduck-dockerized" nodemailer/wildduck-dockerized-setup:1.0.2 domainname [hostname]

Optionally set your contact address in the .env file for lets encrypt expiry notices:

# Used as the lets encrypt contact address for expiry notices: https://letsencrypt.org/docs/expiration-emails/
[email protected]

Deploy using docker-compose:

$ docker-compose up -d

Custom configuration

Configuration files for all services reside in ./config. Alter them in whichever way you want, and restart the service in question.

wildduck-dockerized's People

Contributors

louis-lau avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wildduck-dockerized's Issues

webmail component not installed properly

I am not sure why, but my wildduck webmail instance keeps spinning up and giving me this error:

docker logs topboy_wildduck-webmail_1
(node:1) UnhandledPromiseRejectionWarning: Error: Could not find openssl on your system on this path: openssl
    at /app/node_modules/pem/lib/openssl.js:237:23
(node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing ins
ide of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (reje
ction id: 3)
(node:1) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejection
s that are not handled will terminate the Node.js process with a non-zero exit code.

Then when I run apk add openssl in the docker instance, it'll install it, but the server still will not respond.. I don't even have webmail set up for secure traffic (I have it sitting behind an SSL Reverse proxy.. so I figured I did not need the webmail server itself to do HTTPS)...

Not sure what's causing this but I'll keep digging...

Traefix Error. Unable to find the IP address for the container

traefik_1           | time="2021-09-15T01:30:13Z" level=error msg="service \"wildduck-pop3s\" error: unable to find the IP address for the container \"/wildduck-dockerized_wildduck_1\": the server is ignored" container=wildduck-wildduck-dockerized-5d7046a3bfacdad1a222ce56fa1ec83be5a7396b7ada9a6b0f2853006486abc8 providerName=docker

traefik_1           | time="2021-09-15T01:30:03Z" level=error msg="service \"wildduck-imaps\" error: unable to find the IP address for the container \"/wildduck-dockerized_wildduck_1\": the server is ignored" providerName=docker container=wildduck-wildduck-dockerized-5d7046a3bfacdad1a222ce56fa1ec83be5a7396b7ada9a6b0f2853006486abc8

This error keeps repeating

Moving OLD unsecure mechanisms to Historic

Dear @nodemailer team,

31 August 2006: RFC4616: The PLAIN Simple Authentication and Security Layer (SASL) Mechanism:

20 November 2008: CRAM-MD5 to Historic:

29 June 2017: CRAM-MD5 to Historic:

July 2011: RFC6331: Moving DIGEST-MD5 to Historic:

August 2021: RFC9051: Internet Message Access Protocol (IMAP) - Version 4rev2:
"Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST-MD5 was deprecated."

In more LOGIN (it has been replaced by PLAIN), CRAM-MD5, I add same about NTLM.

There are now:

  • July 2010: RFC5802: Salted Challenge Response Authentication Mechanism (SCRAM): SASL and GSS-API Mechanisms: https://tools.ietf.org/html/rfc5802 (SCRAM-SHA-1 and SCRAM-SHA-1-PLUS)
  • July 2010: RFC5803: Lightweight Directory Access Protocol (LDAP) Schema for Storing Salted: Challenge Response Authentication Mechanism (SCRAM) Secrets: https://tools.ietf.org/html/rfc5803
  • November 2015: RFC7677: SCRAM-SHA-256 and SCRAM-SHA-256-PLUS: Simple Authentication and Security Layer (SASL) Mechanisms: https://tools.ietf.org/html/rfc7677

Soon:

Linked to:

Please add configuration instructions for domain

Please add configuration instructions such as A record, mx record and SPF record of the domain name.

Example for a standalone mail server.

Please add instructions on how to disable some servers, such as webmail or IMAP services for scratch.

There are two purposes, one is quickly configure and build a mail server, and the other is to develop secondary applications based on some services, Meet custom requirements.

Add a docker-compose mail server quick setup file, which can be downloaded and installed directly from hub.docker.com. Simple, convenient and clean.

The project astzweig/wildduck I have been using before is very fast and convenient.

https://hub.docker.com/r/astzweig/wildduck

Thanks, great project

Zonemta continues to restart poorly, something to do with mongo?

zonemta_1           | info App  ---------------------------------------------------------------
zonemta_1           | info App
zonemta_1           | info App  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
zonemta_1           | info App  โ•šโ•โ•โ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ•šโ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—
zonemta_1           | info App    โ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘
zonemta_1           | info App   โ–ˆโ–ˆโ–ˆโ•”โ•  โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•  โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘
zonemta_1           | info App  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘
zonemta_1           | info App  โ•šโ•โ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•  โ•šโ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•     โ•šโ•โ•   โ•šโ•โ•   โ•šโ•โ•  โ•šโ•โ•
zonemta_1           | info App
zonemta_1           | info App  ------------------------ [email protected] -----------------------
zonemta_1           | info App
zonemta_1           | (node:8) Warning: Accessing non-existent property 'MongoError' of module exports inside circular dependency
zonemta_1           | (Use `node --trace-warnings ...` to show where the warning was created)
zonemta_1           | info SMTP/feeder SMTP feeder MTA server started listening on port 587
zonemta_1           | info QS Queue server started
zonemta_1           | info API API server started
zonemta_1           | info Redis/8 Redis ready to take connections
zonemta_1           | info mongo Setup 10 indexes
zonemta_1           | Top-level use of w, wtimeout, j, and fsync is deprecated. Use writeConcern instead.
zonemta_1           | info Queue Sending queue initialized
zonemta_1           | info Child/default/25 [c9a6879d2242b82aadd0] Spawning sender process for default
zonemta_1           | (node:19) Warning: Accessing non-existent property 'MongoError' of module exports inside circular dependency
zonemta_1           | (Use `node --trace-warnings ...` to show where the warning was created)
zonemta_1           | info Redis/19 Redis ready to take connections
...
zonemta_1           | info Redis/63 Redis ready to take connections
zonemta_1           | ERR! Queue/52 Could not initialize database: connection timed out
zonemta_1           | ERR! Child/default/52 [ccd344a2913955a5ae88] Sender process for default exited with 1
zonemta_1           | info Child/default/74 [0cc769d3c031272f47bb] Spawning sender process for default
zonemta_1           | info Child/default/81 [2a31870bab6ec98e54b9] Spawning sender process for default
zonemta_1           | info DNS/74 Loaded DNS cache
zonemta_1           | info Sender/default/74 [0cc769d3c031272f47bb] Starting sending for default
zonemta_1           | info ConnPool/74 Connection pool is ready to take connections
zonemta_1           | (node:74) Warning: Accessing non-existent property 'MongoError' of module exports inside circular dependency
zonemta_1           | (Use `node --trace-warnings ...` to show where the warning was created)
zonemta_1           | info Redis/74 Redis ready to take connections
...
zonemta_1           | ERR! Queue/63 Could not initialize database: connect ECONNREFUSED 172.25.0.3:27017
...
zonemta_1           | ERR! Queue/63 Could not initialize database: connect ECONNREFUSED 172.25.0.3:27017
...

zonemta container bursts on the CPU every time it retries, and memory allocated to the container grows by 100-300M every restart (indefinitely, stopped it at ~20G)

Using default generated config, with env HOSTNAMES=sub.domain.tld (removed [], as =[sub.domain.tld] didn't work.

Mongo seems to be getting connections:

...
mongo_1             | {"t":{"$date":"2022-03-19T10:01:09.713+00:00"},"s":"I",  "c":"NETWORK",  "id":23015,   "ctx":"listener","msg":"Listening on","attr":{"address":"/tmp/mongodb-27017.sock"}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:09.713+00:00"},"s":"I",  "c":"NETWORK",  "id":23015,   "ctx":"listener","msg":"Listening on","attr":{"address":"0.0.0.0"}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:09.713+00:00"},"s":"I",  "c":"NETWORK",  "id":23016,   "ctx":"listener","msg":"Waiting for connections","attr":{"port":27017,"ssl":"off"}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:10.835+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.6:60462","uuid":"593ee7e3-9177-434f-8584-91d15
62cb54f","connectionId":1,"connectionCount":1}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:10.842+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn1","msg":"client metadata","attr":{"remote":"172.26.0.6:60462","client":"conn1","doc":{"driver":{"name":"no
dejs","version":"3.6.4"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.16.0, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:10.855+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.6:60464","uuid":"7da01757-e299-446b-883b-b01da
dbf6c84","connectionId":2,"connectionCount":2}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:10.856+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn2","msg":"client metadata","attr":{"remote":"172.26.0.6:60464","client":"conn2","doc":{"driver":{"name":"no
dejs","version":"3.6.4"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.16.0, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:11.720+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.6:60470","uuid":"94679ad4-8ed4-4734-9688-efe19
067c39e","connectionId":3,"connectionCount":3}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:11.727+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn3","msg":"client metadata","attr":{"remote":"172.26.0.6:60470","client":"conn3","doc":{"driver":{"name":"no
dejs","version":"3.6.4"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.16.0, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:11.909+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.7:35562","uuid":"10f78d0b-62bc-4f12-b05a-6f2f1
f813dfe","connectionId":4,"connectionCount":4}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:11.918+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn4","msg":"client metadata","attr":{"remote":"172.26.0.7:35562","client":"conn4","doc":{"driver":{"name":"no
dejs","version":"3.6.9"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.17.1, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:11.954+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.7:35570","uuid":"f3410b79-fc6a-4e58-9670-3af9c
f4939ce","connectionId":5,"connectionCount":5}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:11.954+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn5","msg":"client metadata","attr":{"remote":"172.26.0.7:35570","client":"conn5","doc":{"driver":{"name":"no
dejs","version":"3.6.9"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.17.1, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:12.440+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.8:49584","uuid":"5bba1fc0-46e1-45ec-9776-fc415
802ab06","connectionId":6,"connectionCount":6}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:12.459+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn6","msg":"client metadata","attr":{"remote":"172.26.0.8:49584","client":"conn6","doc":{"driver":{"name":"no
dejs","version":"3.6.3"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.16.0, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:14.074+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.8:49592","uuid":"3af84bb3-c469-4bd3-85e4-ae08f
8a4e7d2","connectionId":7,"connectionCount":7}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:14.099+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn7","msg":"client metadata","attr":{"remote":"172.26.0.8:49592","client":"conn7","doc":{"driver":{"name":"no
dejs","version":"3.6.3"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.16.0, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:21.364+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.6:60530","uuid":"6318701d-700c-450b-acbb-4aaff
c6478b4","connectionId":8,"connectionCount":8}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:21.365+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn8","msg":"client metadata","attr":{"remote":"172.26.0.6:60530","client":"conn8","doc":{"driver":{"name":"no
dejs","version":"3.6.4"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.16.0, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:22.445+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.7:35622","uuid":"d3935efe-3ee0-430a-854e-891bd
6cce7ca","connectionId":9,"connectionCount":9}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:22.448+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn9","msg":"client metadata","attr":{"remote":"172.26.0.7:35622","client":"conn9","doc":{"driver":{"name":"no
dejs","version":"3.6.9"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.17.1, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:22.556+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.6:60536","uuid":"4afdc1b8-4545-4274-bfdd-091ae
81863ec","connectionId":10,"connectionCount":10}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:22.561+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn10","msg":"client metadata","attr":{"remote":"172.26.0.6:60536","client":"conn10","doc":{"driver":{"name":"
nodejs","version":"3.6.4"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.16.0, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:23.020+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.8:49606","uuid":"d67c61d5-6163-434e-9a1a-0c8f5
a298888","connectionId":11,"connectionCount":11}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:23.026+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn11","msg":"client metadata","attr":{"remote":"172.26.0.8:49606","client":"conn11","doc":{"driver":{"name":"
nodejs","version":"3.6.3"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.16.0, LE (unified)"}}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:24.643+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.26.0.8:49608","uuid":"1296ef44-aa49-4485-a925-fe4e0
21e23cf","connectionId":12,"connectionCount":12}}
mongo_1             | {"t":{"$date":"2022-03-19T10:01:24.646+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn12","msg":"client metadata","attr":{"remote":"172.26.0.8:49608","client":"conn12","doc":{"driver":{"name":"
nodejs","version":"3.6.3"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.4.0-104-generic"},"platform":"'Node.js v14.16.0, LE (unified)"}}}
...

On bringing the containers down, mongo closed ~300 open connections.

Custom SSL Certificates

Hello,

I can't find anything about using my own custom SSL certificates for wildduck.

I have certificates on my host machine, any way I can use them inside the containers for wildduck TLS/SSL etc?

Thank in advance,
Avii.

Webmail doesn't start by docker-compose up

I have this issue

wildduck-webmail_1 | info Express WWW server listening on port 3000
wildduck-webmail_1 | /app/node_modules/ioredis/built/Command.js:43
wildduck-webmail_1 | this.args = args.flat();
wildduck-webmail_1 | ^
wildduck-webmail_1 |
wildduck-webmail_1 | TypeError: args.flat is not a function
wildduck-webmail_1 | at new Command (/app/node_modules/ioredis/built/Command.js:43:26)
wildduck-webmail_1 | at EventEmitter.select (/app/node_modules/ioredis/built/utils/Commander.js:92:13)
wildduck-webmail_1 | at Socket. (/app/node_modules/ioredis/built/redis/event_handler.js:40:18)
wildduck-webmail_1 | at Object.onceWrapper (events.js:286:20)
wildduck-webmail_1 | at Socket.emit (events.js:203:15)
wildduck-webmail_1 | at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1093:10)
root_wildduck-webmail_1 exited with code 1

docker-compose failed to start

docker-compose up -d with error messages

Status: Downloaded newer image for traefik:latest
Creating wildduck-dockerized_traefik_1 ... done
Creating wildduck-dockerized_redis_1   ... done
Creating wildduck-dockerized_mongo_1   ... done
Creating wildduck-dockerized_rspamd_1   ... error
Creating wildduck-dockerized_zonemta_1 ... 
Creating wildduck-dockerized_wildduck_1 ... 

ERROR: for wildduck-dockerized_rspamd_1  Cannot start service rspamd: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/home/administrator/git/wildduck-dockerized/config/rspamd/worker-normaCreating wildduck-dockerized_zonemta_1  ... done
Creating wildduck-dockerized_wildduck_1 ... done
Creating wildduck-dockerized_wildduck-webmail_1 ... done

ERROR: for rspamd  Cannot start service rspamd: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/home/administrator/git/wildduck-dockerized/config/rspamd/worker-normal.conf" to rootfs at "/etc/rspamd/worker-normal.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
ERROR: Encountered errors while bringing up the project.
2022-02-06 15:41:07 [administrator@ubuntu wildduck-dockerized]$ sudo docker-compose up -d

any suggestions ??

Haraka doesn't accept tls certificates

Setup:
edited tls.ini with cert and ley value for letsencrypt certificate as privkey.pem and fullchain.pem

Following error code:
Starting up Haraka version 2.8.27
[INFO] [-] [core] Loading plugins
[INFO] [-] [core] Loading plugin: spf
[INFO] [-] [core] Loading plugin: dkim_verify
[INFO] [-] [core] Loading plugin: rspamd
[INFO] [-] [core] Loading plugin: tls
[INFO] [-] [core] loading tls.ini
[INFO] [-] [core] Generating a 2048 bit dhparams file at /app/config/dhparams.pem
[INFO] [-] [core] Loading plugin: wildduck
[CRIT] [-] [core] Error: spawn openssl ENOENT
[CRIT] [-] [core] at Process.ChildProcess._handle.onexit (internal/child_process.js:269:19)
[CRIT] [-] [core] at onErrorNT (internal/child_process.js:465:16)
[CRIT] [-] [core] at processTicksAndRejections (internal/process/task_queues.js:80:21)
[NOTICE] [-] [core] Shutting down

Error within wildduck

_1 | /wildduck/api.js:164
wildduck_1 | origins: [].concat(config.api.cors.origins || ['*']),
wildduck_1 | ^
wildduck_1 |
wildduck_1 | TypeError: Cannot read property 'origins' of undefined
wildduck_1 | at Object. (/wildduck/api.js:164:40)
wildduck_1 | at Module._compile (internal/modules/cjs/loader.js:1085:14)
wildduck_1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
wildduck_1 | at Module.load (internal/modules/cjs/loader.js:950:32)
wildduck_1 | at Function.Module._load (internal/modules/cjs/loader.js:790:14)
wildduck_1 | at Module.require (internal/modules/cjs/loader.js:974:19)
wildduck_1 | at require (internal/modules/cjs/helpers.js:92:18)
wildduck_1 | at Object. (/wildduck/worker.js:8:13)
wildduck_1 | at Module._compile (internal/modules/cjs/loader.js:1085:14)
wildduck_1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)

How to use other https reverse proxy properly?

Currently I try to install wildduck dockerized on caprover, which has https certificate
I changed port "443" to "1443" (as example) gets "404 page not found" text
Same text I gets on 180 (ex 80) port, but there something "Found" (no any useful page)
On 443/80 all are ok

SCRAM-SHA-1(-PLUS) + SCRAM-SHA-256(-PLUS) + SCRAM-SHA-512(-PLUS) + SCRAM-SHA3-512(-PLUS) supports

Dear @nodemailer team,

Can you add supports of :

  • SCRAM-SHA-1
  • SCRAM-SHA-1-PLUS
  • SCRAM-SHA-256
  • SCRAM-SHA-256-PLUS
  • SCRAM-SHA-512
  • SCRAM-SHA-512-PLUS
  • SCRAM-SHA3-512
  • SCRAM-SHA3-512-PLUS

You can add too:

  • SCRAM-SHA-224
  • SCRAM-SHA-224-PLUS
  • SCRAM-SHA-384
  • SCRAM-SHA-384-PLUS

"When using the SASL SCRAM mechanism, the SCRAM-SHA-256-PLUS variant SHOULD be preferred over the SCRAM-SHA-256 variant, and SHA-256 variants [RFC7677] SHOULD be preferred over SHA-1 variants [RFC5802]".

https://xmpp.org/extensions/inbox/hash-recommendations.html

-PLUS variants:

IMAP:

LDAP:

  • RFC5803: Lightweight Directory Access Protocol (LDAP) Schema for Storing Salted: Challenge Response Authentication Mechanism (SCRAM) Secrets: https://tools.ietf.org/html/rfc5803

HTTP:

2FA:

IANA:

Linked to:

Without Proxy and SSL support

I would say that its better to just host without any proxy or ssl cuz its really messes up things keeping it plain and simple and using something like a NgnixProxyManager would be a greater help for the users

arm64 Container for nodemailer/wildduck:1.41.3 not starting

If I try to start the nodemailer/wildduck:1.41.3 container on a arm64 Server I do get the following error:

exec /usr/bin/dumb-init: exec format error

Is it possible the container has not build correctly for arm64? There are no issues with the nodemailer/haraka-wildduck and
nodemailer/zonemta-wildduck containers.

The Version in the docker-compose.yml of this repository v1.34.0 does not seem to have a arm64 Version:
docker: image with reference docker.io/nodemailer/wildduck:v1.34.0 was found but does not match the specified platform: wanted linux/arm64, actual: linux/amd64.

Example of List-Unsubscribe header on config (or support)

Hello,

My use case: All my email is marked as SPAM by google (on the recent days, it is marked as REJECTED and is not delivered), I have implemented almost all the recommended practices by google (see https://support.google.com/mail/answer/81126?sjid=17926696693480439006-NA)

I have also read that the List-Unsubscribe header is well known as a good practice for google. After taking a look on the nodemailer/wildduck code, I see that it is supported (if the header is passed https://github.com/nodemailer/wildduck/blob/1a800fd7be54392478e399257e7b0f0dd2db3820/lib/api/messages.js#L869-L870), but is not clear to me if you pass the header somewhere, or if I can configure it on the .toml files.

I appreciate your help.

Carlos

Can't create a new account

After I installed it according to the document, I opened mail.mydomain.com, but I could not create an account.

Wildduck on K8s

Hi,

Are there any plans to support this deoplyment onn k8s?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.