Giter VIP home page Giter VIP logo

Comments (12)

Angatar avatar Angatar commented on July 19, 2024

Hi,
You can start with the following example as a basis for your compose.yaml file and adapt it according to the documentation and your requirements. Please note that even for a test you will need to add the proper DNS records for your domain to make it works.

services:
  mailman:
    image: d3fk/mailman2
    container_name: mailman
    hostname: ${EMAIL_HOST}
    restart: always
    ports:
      - "80:80"
      - "25:25"
      - "465:465"
    environment:
      EMAIL_HOST: ${EMAIL_HOST}
      URL_HOST: ${URL_HOST}
      LIST_ADMIN: ${LIST_ADMIN}
      MASTER_PASSWORD: ${MASTER_PASSWORD}
      URL_PATTERN: ${URL_PATTERN}
      URL_ROOT: ${URL_ROOT}
    extra_hosts:
      - ${EMAIL_HOST}:127.0.0.1

You can replace the env vars by your values in the compose.yaml or create in the same directory a .env file that will be easier to maintain e.g.:
.env

URL_HOST=lists.example.com
EMAIL_HOST=mails.example.com
[email protected]
MASTER_PASSWORD=example
URL_PATTERN=http
URL_ROOT=lists/

You can complete the compose.yaml and .env with environment variables listed in the ENVIRONMENT section

Then simply run your compose file with docker-compose up -d and visit your $URL_HOST/$URL_ROOT/admin to start managing your mailing lists (indicate the mapped port after the URL_HOST if required).

Hope this helps.

from mailman2.

Angatar avatar Angatar commented on July 19, 2024

Dont forget to visit the logs of the mailman container you have created:

$ docker logs mailman 

The logs will display the deployment steps of the container and provide you in the end with a valid DKIM public key value and the DKIM txt record that can be added to your DNS records to enable DKIM check for your mailman mailing list server.

The mailing lists cannot be really functional with a host set to localhost since they require a valid EMAIL_HOST name to be configured.

from mailman2.

jlgarnier avatar jlgarnier commented on July 19, 2024

from mailman2.

jlgarnier avatar jlgarnier commented on July 19, 2024

from mailman2.

Angatar avatar Angatar commented on July 19, 2024

Hi,
Glad it helps and thank you for the feedback ! 😁

NB:

  • Yes, in the .env file the environment variables have to be given with a = as if they are set with a linux export.

  • In the compose.yaml file the environment values can be set either with an array or a dictionary (so either - URL_HOST=lists.example.com or URL_HOST: lists.example.com https://docs.docker.com/compose/compose-file/compose-file-v3/#environment). Any boolean values (true, false, yes, no) need to be enclosed in quotes to ensure they are not converted to True or False by the YML parser.

  • Regarding the LE certificate, if you need a rapid set up you can make use of the official core Certbot image certbot/certbot.

from mailman2.

jlgarnier avatar jlgarnier commented on July 19, 2024

from mailman2.

Angatar avatar Angatar commented on July 19, 2024

Hi,
The port redirection you mention is just port mapping, it is invisible for exim from the container, so they are not involved if your listed mapped ports are well open ports on your cloud IT.
This observed behaviour with new subscription is due to the configuration of mailman set by default in this container that were thought to be more convenient ... as stated in the documentation (mailman configuration).
You can activate the option entitled "Should administrator get notices of subscribes and unsubscribes?" from the mailing list interface(General options section) or change the default config file by using a volume.

NB: The MX DNS record is also important: it declares that your EMAIL_HOST is authorised to send email for your domain/subdomain name 😉

from mailman2.

jlgarnier avatar jlgarnier commented on July 19, 2024

from mailman2.

Angatar avatar Angatar commented on July 19, 2024

I then suspected I had to add

  • A record: server1 IN A < server IP address>
  • A record: mails IN A (seems CNAME here is forbidden), may be useless
  • MX record: mails IN MX 50 server1.eurosmart.com.

In your case, the A record for your domain name simply enables you to access your mailman website with a domain name, so, not strictly compulsory but pretty useful.

As your URL_HOST and EMAIL_HOST are different, you'll indeed also need an A record for your EMAIL_HOST to declare the subdomain/domain that will be associated to your email server/load-balancer/reverse-proxy.

The MX record is indeed required, you can define different priorities if you have several MX.

A PTR record will also have an important impact on your email deliverability since a reverse DNS lookups is made by email servers to ensure your email server is well who it says to be.

If you have gmail addresses in your mailing lists, a DKIM record will also probably be part of the minimal records since it seems that gmail would not accept mails from servers without a valid DKIM to avoid spoofing (not experimented, only got feedback about it ... maybe other email providers are requiring/will require it)

The other suggested records by the DNS configuration section of the documentation (i.e SPF and DMARC) are currently only improving the deliverability of your emails but they are more and more often checked by emails servers and they currently impact the SPAM tagging of your messages.

from mailman2.

Angatar avatar Angatar commented on July 19, 2024

By the way, I don’t know where the issuing IP address mentioned

BTW it is probably the IP of the computer you used (or seen by the email server: might be a proxy depending on your configuration) to subscribe the new users to the list.

from mailman2.

jlgarnier avatar jlgarnier commented on July 19, 2024

from mailman2.

Angatar avatar Angatar commented on July 19, 2024

and Mailman is now able to send notifications for subscriptions.

Email notifications ? If email notifications for subscriptions are well sent by Mailman and delivered to a recipient, this recipient address receiving the notifications should also receive the messages sent to the list if this email address is well part of the members addresses of this list.

I just couldn’t find how to set up the PTR record.

If part of your list members do not receive the message you might indeed encounter a problem of email deliverability due to a miss configured PTR record/reverse DNS: some email servers are less regarding to the PTR record but they are mostly small or local email servers, for the most used email servers it is now part of the rules to systematically check the PTR record before permitting the messages delivery.

The PTR record can be configured and controlled by the IP block owners (usually the server hosting company so probably you local hosting provider for your email service).
In case you own the local DNS server on our own, you'll need to create a reverse DNS zone.


In the event where your d3fk/mailman2 never sent an email till now you can check that you can send an email directly from the MTA (Exim) of your running d3fk/mailman2 container to one of your valid email address with something like the following command:

$  docker exec -ti mailman exim -v [email protected] 

wait a few seconds for the empty prompt then enter the following lines

From: [email protected]
Subject: Test mail
Simple test message

Finally send your test email by pressing ctrl+d ; you should see the details about the SMTP connection that might help you for debugging purpose.

Hope this helps.

from mailman2.

Related Issues (11)

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.