Discourse: externen Postfix Mailserver anbinden
Discourse ist ein relativ breit eingesetztes Support-CMS: Beispiele wären Nextcloud Support Forum, Podlove, Last.FM. Discourse ist Open Source, allerdings an docker gebunden. Die Installation ist relativ leicht auf Debian / Ubuntu Basis. Lediglich die Konfiguration mit nginx und vor allem das Einstellen des Mailservers brauchen etwas Zeit.
In meinem Fall hatte ich einen Postfix lokal auf dem selben Server installiert, der als Satellitensystem weiter an meinen Hauptpostfixserver weiterleitet. Zunächst muss in der app.yml unter discourse/containers/ folgendes eingestellt werden:
templates: - "templates/postgres.template.yml" - "templates/redis.template.yml" - "templates/web.template.yml" - "templates/sshd.template.yml" - "templates/web.ratelimited.template.yml" - "templates/web.socketed.template.yml" ## which TCP/IP ports should this container expose? ## If you want Discourse to share a port with another webserver like Apache or nginx, ## see https://meta.discourse.org/t/17247 for details expose: - "4001:22" # http params: db_default_text_search_config: "pg_catalog.english" ## Set db_shared_buffers to a max of 25% of the total memory. ## will be set automatically by bootstrap based on detected RAM, or you can override db_shared_buffers: "4096MB" ## can improve sorting performance, but adds memory usage per-connection #db_work_mem: "40MB" ## Which Git revision should this container use? (default: tests-passed) #version: tests-passed env: LANG: en_US.UTF-8 DISCOURSE_DEFAULT_LOCALE: de ## How many concurrent web requests are supported? Depends on memory and CPU cores. ## will be set automatically by bootstrap based on detected CPUs, or you can override UNICORN_WORKERS: 8 ## TODO: The domain name this Discourse instance will respond to DISCOURSE_HOSTNAME: 'support.dein-server.de' ## Uncomment if you want the container to be started with the same ## hostname (-h option) as specified above (default "$hostname-$config") DOCKER_USE_HOSTNAME: true ## TODO: List of comma delimited emails that will be made admin and developer ## on initial signup example 'user1@example.com,user2@example.com' DISCOURSE_DEVELOPER_EMAILS: 'mail@dein-server.de' TODO: The SMTP mail server used to validate new accounts and send notifications DISCOURSE_SMTP_ADDRESS: mail.dein-server.de DISCOURSE_SMTP_ENABLE_START_TLS: false DISCOURSE_SMTP_AUTHENTICATION: "plain"
Im zweiten Schritt überprüfen wir, ob in der Firewall Port 25 sowohl für Docker als auch für Output freigegeben ist. Im dritten und letzten Schritt tragen wir in der main.conf von Postfix das virtuelle Netzwerk von docker (meist 172.17…) ein als auch das Lauschen auf allen Internet Interfaces:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 172.17.0.0/12 inet_interfaces = all
Postfix neustarten, Discourse neu generieren lassen mit den neuen Configs und fertig.