Roundcube im Docker

Y tho?

  • nginx auf der main soll nur static files ausliefern, codeexec bitte nur isoliert vom rest
  • roundcube ist so mittel zu updaten und kann auf eine eigene Sammlung spannender CVEs zurückbloclen

Umsetzung

docker-compose.yml

Die dockerfile liegt unter /home/brot/devel/minad-roundcube-docker-compose

services:
  roundcubemail:
    image: roundcube/roundcubemail:latest
    container_name: roundcubemail
    volumes:
      - ./data/config/:/var/roundcube/config
      - ./data/plugins:/var/www/html/plugins
      - ./db/sqlite:/var/roundcube/db
    ports:
      - 49003:80
    environment:
      - ROUNDCUBEMAIL_DEFAULT_HOST=tls://mail.minad.de
      - ROUNDCUBEMAIL_SMTP_SERVER=tls://mail.minad.de
      - ROUNDCUBEMAIL_USERNAME_DOMAIN=minad.de
    extra_hosts:
      - "mail.minad.de:host-gateway"

Die extra_hosts sorgt dafür dass die Zertifikate weiterhin auf den korrekten Namen laufen, mailserver ist zwar "mail.minad.de" aber die User sind alle "@minad.de".

Import der vorherigen Userdaten

Die "gesammelten Adressen" liegen von der ursprünglichen Installation noch in der PostgreSQL Datenbank. Möchte jemand jetzt seine gesammelten Adressen behalten, müssen diese in die sqlite-DB im Container importiert werden.

  1. su psql -s /bin/bash
  2. psql roundcube
  3. roundcubemail=# Copy( select * from collected_addresses where user_id = 28) To '/tmp/collected_addresses_uid_28.csv' With CSV DELIMITER ',' HEADER; COPY 219
  4. sed 's/\,28\,/\,4\,/g' /tmp/collected_addresses_uid_28.csv > /tmp/collected_addresses_uid_4.csv
  5. sudo sqlite3 sqlite.db
  6. .mode csv
  7. .import /tmp/collected_addresses_uid_4.csv collected_addresses