Angeregt durch die diversen Diskussionen rund um den Betrieb eines CAL/CARDDAV-Servers auf Basis von radicale widmete ich mich dem Thema etwas eingehender. Auch im Hinblick auf mein demnächst hoffentlich eintreffendes Einplatinen-Rechnerchen, auf dem dann mein neuer Mailserver laufen soll.
Ich beschäftige mich dazu mit der Container-Technologie Docker. Einfach weil es mich interessiert, und die Container denke ich, noch schlanker sind als systemd-nspawn-Container. Außerdem las ich mal, dass systemd-nspawn-Container eher nur für Entwicklungsumgebungen und eher weniger für Produktiv-Systeme geeignet sind. (Stimmt das so überhaupt noch?)
Jedenfalls habe ich auf der Github-Projektseite von radicale ein Docker-File entdeckt. https://github.com/Kozea/Radicale. Und auch hier eine Variante mit Anleitung. Der Author hat das Dockerfile von Kozea geforked und entwickelt daran selber weiter. https://hub.docker.com/r/tomsquest/docker-radicale/
Ich hab es an meine Bedürfnisse angepasst und gleich noch infcloud und radicale_imap mit reingepackt, da ich mich mit meinem noch bare-metal laufenden Dovecot authentifiziere:
Code: Alles auswählen
# cat radicale.docker
FROM alpine:latest
# Version of Radicale (e.g. 2.0.0)
ARG VERSION=master
# Install dependencies
RUN apk add --no-cache \
python3 \
python3-dev \
build-base \
libffi-dev \
ca-certificates \
openssl && \
python3 -m pip install passlib bcrypt && \
apk del \
python3-dev \
build-base \
libffi-dev
# Install Radicale
RUN wget --quiet https://github.com/Kozea/Radicale/archive/${VERSION}.tar.gz --output-document=radicale.tar.gz && \
tar xzf radicale.tar.gz && \
python3 -m pip install ./Radicale-${VERSION} && \
rm -r radicale.tar.gz Radicale-${VERSION}
# Install IMAP-Authentication
RUN wget --quiet https://github.com/Unrud/RadicaleIMAP/archive/${VERSION}.tar.gz --output-document=radicaleIMAP.tar.gz && \
tar xzf radicaleIMAP.tar.gz && \
python3 -m pip install ./RadicaleIMAP-${VERSION} && \
rm -r radicaleIMAP.tar.gz RadicaleIMAP-${VERSION}
# Install Web-Frontend InfCloud
RUN wget --quiet https://github.com/Unrud/RadicaleInfCloud/archive/${VERSION}.tar.gz --output-document=radicaleInfCloud.tar.gz && \
tar xzf radicaleInfCloud.tar.gz && \
python3 -m pip install ./RadicaleInfCloud-${VERSION} && \
rm -r radicaleInfCloud.tar.gz RadicaleInfCloud-${VERSION}
# Persistent storage for data (Mount it somewhere on the host!)
VOLUME /var/lib/radicale
# Configuration data (Put the "config" file here!)
VOLUME /etc/radicale
VOLUME /etc/ssl/certs
# TCP port of Radicale (Publish it on a host interface!)
EXPOSE 5232
# Run Radicale (Configure it here or provide a "config" file!)
CMD ["radicale", "-C", "/etc/radicale/xe-docker-config", "--hosts", "0.0.0.0:5232"]
Ich erstelle mit obigem Docker-File also ein erstes Image:
Code: Alles auswählen
docker build -t radicale - < radicale.docker
Dann wird aus diesem Image ein Container erzeugt:
Code: Alles auswählen
# docker run --name radicale -p 5232:5232 -v /etc/ssl/certs:/etc/ssl/certs -v /etc/radicale:/etc/radicale -v /var/lib/radicale:/var/lib/radicale --network=host radicale
Code: Alles auswählen
Starting Radicale
Authentication type is 'radicale_imap'
Storage type is 'multifilesystem'
Rights type is 'owner_only'
Web type is 'radicale_infcloud'
Listening to 'radicale.localhost' on port 5232 using SSL
Radicale server ready
Jedoch dann geht es nicht mehr weiter.
Manchmal lässt sich das Webfrontend gar nicht mehr aufrufen, dann ist in der Ausgabe am Terminal von Docker das hier:
Code: Alles auswählen
GET request for '/' received from 127.0.0.1 using 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
Request headers:
{'CONTENT_LENGTH': '',
'CONTENT_TYPE': 'text/plain',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_AUTHORIZATION': 'Basic **masked**',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'radicale.localhost:5232',
'HTTP_UPGRADE_INSECURE_REQUESTS': '1',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 '
'Firefox/56.0',
'PATH_INFO': '/',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_CERTIFICATE': None,
'REMOTE_HOST': '',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'radicale.localhost',
'SERVER_PORT': '5232',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'wsgi.errors': <_io.StringIO object at 0x7f7cd124cd38>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=6>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
Sanitized script name: ''
Sanitized path: '/'
Code: Alles auswählen
A server error occurred. Please contact the administrator.
Oder das Webfrontend kommt, aber wenn ich meine Logindaten eingebe und auf Enter drücke, rührt sich das Webfrontend nicht mehr und im Terminal steht:
Code: Alles auswählen
An exception occurred during request: [SSL: SSLV3_ALERT_BAD_CERTIFICATE] sslv3 alert bad certificate (_ssl.c:2178)
GET request for '/' received from 127.0.0.1 using 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
Request headers:
{'CONTENT_LENGTH': '',
'CONTENT_TYPE': 'text/plain',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'radicale.localhost:5232',
'HTTP_UPGRADE_INSECURE_REQUESTS': '1',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 '
'Firefox/56.0',
'PATH_INFO': '/',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_CERTIFICATE': None,
'REMOTE_HOST': '',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'radicale.localhost',
'SERVER_PORT': '5232',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'wsgi.errors': <_io.StringIO object at 0x7f1fdd41ed38>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=6>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
Sanitized script name: ''
Sanitized path: '/'
Response content:
Redirected to .web
GET response status for '/' in 0.002 seconds: 302 Found
An exception occurred during request: SSL handshake failed: EOF occurred in violation of protocol (_ssl.c:749)
GET request for '/.web' received from 127.0.0.1 using 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
Request headers:
{'CONTENT_LENGTH': '',
'CONTENT_TYPE': 'text/plain',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'radicale.localhost:5232',
'HTTP_UPGRADE_INSECURE_REQUESTS': '1',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 '
'Firefox/56.0',
'PATH_INFO': '/.web',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_CERTIFICATE': None,
'REMOTE_HOST': '',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'radicale.localhost',
'SERVER_PORT': '5232',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'wsgi.errors': <_io.StringIO object at 0x7f1fdd41ed38>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=6>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
Sanitized script name: ''
Sanitized path: '/.web'
Response content:
Redirected to .web/
GET response status for '/.web' in 0.003 seconds: 302 Found
GET request for '/.web/' received from 127.0.0.1 using 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
Request headers:
{'CONTENT_LENGTH': '',
'CONTENT_TYPE': 'text/plain',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'radicale.localhost:5232',
'HTTP_UPGRADE_INSECURE_REQUESTS': '1',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 '
'Firefox/56.0',
'PATH_INFO': '/.web/',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_CERTIFICATE': None,
'REMOTE_HOST': '',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'radicale.localhost',
'SERVER_PORT': '5232',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'wsgi.errors': <_io.StringIO object at 0x7f1fdd41ed38>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=6>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
Sanitized script name: ''
Sanitized path: '/.web/'
GET response status for '/.web/' in 0.003 seconds: 200 OK
GET request for '/.web/fn.js' received from 127.0.0.1 using 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
Request headers:
{'CONTENT_LENGTH': '',
'CONTENT_TYPE': 'text/plain',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': '*/*',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'radicale.localhost:5232',
'HTTP_REFERER': 'https://radicale.localhost:5232/.web/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 '
'Firefox/56.0',
'PATH_INFO': '/.web/fn.js',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_CERTIFICATE': None,
'REMOTE_HOST': '',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'radicale.localhost',
'SERVER_PORT': '5232',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'wsgi.errors': <_io.StringIO object at 0x7f1fdd41ed38>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=6>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
Sanitized script name: ''
Sanitized path: '/.web/fn.js'
GET request for '/.web/css/main.css' received from 127.0.0.1 using 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
Request headers:
{'CONTENT_LENGTH': '',
'CONTENT_TYPE': 'text/plain',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/css,*/*;q=0.1',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'radicale.localhost:5232',
'HTTP_REFERER': 'https://radicale.localhost:5232/.web/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 '
'Firefox/56.0',
'PATH_INFO': '/.web/css/main.css',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_CERTIFICATE': None,
'REMOTE_HOST': '',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'radicale.localhost',
'SERVER_PORT': '5232',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'wsgi.errors': <_io.StringIO object at 0x7f1fdd3ad438>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=7>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
Sanitized script name: ''
GET response status for '/.web/fn.js' in 0.006 seconds: 200 OK
Sanitized path: '/.web/css/main.css'
GET response status for '/.web/css/main.css' in 0.005 seconds: 200 OK
GET request for '/.web/css/icon.png' received from 127.0.0.1 using 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
Request headers:
{'CONTENT_LENGTH': '',
'CONTENT_TYPE': 'text/plain',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'radicale.localhost:5232',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 '
'Firefox/56.0',
'PATH_INFO': '/.web/css/icon.png',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_CERTIFICATE': None,
'REMOTE_HOST': '',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'radicale.localhost',
'SERVER_PORT': '5232',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'wsgi.errors': <_io.StringIO object at 0x7f1fdd41ed38>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=6>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
Sanitized script name: ''
Sanitized path: '/.web/css/icon.png'
GET response status for '/.web/css/icon.png' in 0.002 seconds: 200 OK
PROPFIND request for '/' received from 127.0.0.1 using 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
Request headers:
{'CONTENT_LENGTH': '127',
'CONTENT_TYPE': 'text/plain;charset=UTF-8',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': '*/*',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'radicale.localhost:5232',
'HTTP_REFERER': 'https://radicale.localhost:5232/.web/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 '
'Firefox/56.0',
'PATH_INFO': '/',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_CERTIFICATE': None,
'REMOTE_HOST': '',
'REQUEST_METHOD': 'PROPFIND',
'SCRIPT_NAME': '',
'SERVER_NAME': 'radicale.localhost',
'SERVER_PORT': '5232',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'wsgi.errors': <_io.StringIO object at 0x7f1fdd41ed38>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=6>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
Sanitized script name: ''
Sanitized path: '/'
Access to '/' denied for anonymous user
Asking client for authentication
Response content:
Access to the requested resource forbidden.
PROPFIND response status for '/' in 0.002 seconds: 401 Unauthorized
PROPFIND request for '/' received from 127.0.0.1 using 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
Request headers:
{'CONTENT_LENGTH': '127',
'CONTENT_TYPE': 'text/plain;charset=UTF-8',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': '*/*',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_AUTHORIZATION': 'Basic **masked**',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'radicale.localhost:5232',
'HTTP_REFERER': 'https://radicale.localhost:5232/.web/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 '
'Firefox/56.0',
'PATH_INFO': '/',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_CERTIFICATE': None,
'REMOTE_HOST': '',
'REQUEST_METHOD': 'PROPFIND',
'SCRIPT_NAME': '',
'SERVER_NAME': 'radicale.localhost',
'SERVER_PORT': '5232',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'wsgi.errors': <_io.StringIO object at 0x7f1fdd41ed38>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=6>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
Sanitized script name: ''
Sanitized path: '/'
^CStopping Radicale
^C^CAn exception occurred during PROPFIND request on '/': Failed to communicate with IMAP server '172.18.0.1:993': [Errno 110] Operation timed out
Gleichzeitig ist im Log von dovecot, das mit hochgedrehtem Logging läuft:
Code: Alles auswählen
Nov 06 22:23:17 aldebaran dovecot[10497]: imap-login: Login: user=<jakob>, method=PLAIN, rip=::1, lip=::1, mpid=3133, TLS, session=<I7EXEFdd1skAAAAAAAAAAAAAAAAAAAAB>
Nov 06 22:23:17 aldebaran dovecot[10497]: imap(jakob): Logged out in=96 out=1005
Nov 06 22:23:17 aldebaran dovecot[10497]: imap-login: Debug: SSL alert: close notify [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: elliptic curve secp384r1 will be used for ECDH and ECDHE key exchanges
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: elliptic curve secp384r1 will be used for ECDH and ECDHE key exchanges
Nov 06 22:23:19 aldebaran dovecot[10497]: auth: Debug: auth client connected (pid=3138)
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x10, ret=1: before SSL initialization [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: before SSL initialization [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: before SSL initialization [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS read client hello [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write server hello [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write certificate [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write key exchange [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write server done [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2002, ret=-1: SSLv3/TLS write server done [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write server done [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS read client key exchange [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS read change cipher spec [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS read finished [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write session ticket [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write change cipher spec [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write finished [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x20, ret=1: SSL negotiation finished successfully [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL: where=0x2002, ret=1: SSL negotiation finished successfully [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: auth: Debug: client in: AUTH 1 PLAIN service=imap secured session=zMk6EFdd2skAAAAAAAAAAAAAAAAAAAAB lip=::1 rip=::1 lport=993 rport=51674 local_name=localhost
Nov 06 22:23:19 aldebaran dovecot[10497]: auth: Debug: client passdb out: CONT 1
Nov 06 22:23:19 aldebaran dovecot[10497]: auth: Debug: client in: CONT<hidden>
Nov 06 22:23:19 aldebaran dovecot[10497]: auth: Debug: passwd-file(jakob,::1,<zMk6EFdd2skAAAAAAAAAAAAAAAAAAAAB>): lookup: user=jakob file=/etc/dovecot/users
Nov 06 22:23:19 aldebaran dovecot[10497]: auth: Debug: client passdb out: OK 1 user=jakob acl_groups=rg,
Nov 06 22:23:19 aldebaran dovecot[10497]: auth: Debug: master in: REQUEST 4063100929 3138 1 5d68dfffb88e5d7fef145f117751db63 session_pid=3139 request_auth_token
Nov 06 22:23:19 aldebaran dovecot[10497]: auth: Debug: passwd-file(jakob,::1,<zMk6EFdd2skAAAAAAAAAAAAAAAAAAAAB>): lookup: user=jakob file=/etc/dovecot/users
Nov 06 22:23:19 aldebaran dovecot[10497]: auth: Debug: master userdb out: USER 4063100929 jakob home=/var/mail/jakob auth_token=9b6d659c41f0e3ca2a9f7457a1aa6080a92ab98d
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Login: user=<jakob>, method=PLAIN, rip=::1, lip=::1, mpid=3139, TLS, session=<zMk6EFdd2skAAAAAAAAAAAAAAAAAAAAB>
Nov 06 22:23:19 aldebaran dovecot[10497]: imap(jakob): Logged out in=89 out=994
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL alert: close notify [::1]
Nov 06 22:23:19 aldebaran dovecot[10497]: imap-login: Debug: SSL alert: close notify [::1]
Code: Alles auswählen
An exception occurred during GET request on '/favicon.ico': Failed to communicate with IMAP server '172.18.0.1:993': [Errno 110] Operation timed out
An exception occurred during request: 'NoneType' object has no attribute 'split'
Mit der selben Konfiguration (außer den Imap-Host auf die IP-Adresse aus dem host-Network von Docker gesetzt, also 172.17.0.1:993) funktioniert lokal alles wunderbar zusammen.
Ich versteh das nicht. Kann das an der IPv6 ::1 für localhost liegen, wie im Dovecot-Log aufscheint? Aber warum wird da die ::1 statt 127.0.0.1 genommen?
Hat irgendjemand Ideen oder Erfahrungen mit so einem Setup?
lg scientific
PS: Es soll auch exim4 und dovecot in weitere Container gepackt werden, wenn ich das ordentlich zum Laufen bekomme.