dovecot oauth2
This commit is contained in:
parent
9f72ccca0a
commit
e5cd04465c
|
@ -15,8 +15,22 @@ ldap_query_filter_alias: "(&(objectClass=posixAccount)(emailalternative=%s))"
|
||||||
ldap_query_filter_domain: "(&(objectClass=posixAccount)(|(mail=%s)(uid=%s)))"
|
ldap_query_filter_domain: "(&(objectClass=posixAccount)(|(mail=%s)(uid=%s)))"
|
||||||
ldap_query_filter_senders: "(&(objectClass=posixAccount)(|(mail=%s)(uid=%s)))"
|
ldap_query_filter_senders: "(&(objectClass=posixAccount)(|(mail=%s)(uid=%s)))"
|
||||||
|
|
||||||
sasl_ldap_filter: "(&(|(uid=%U)(mail=%U))(class=posixAccount))"
|
sasl_ldap_filter: >
|
||||||
|
(&(|(uid=%U)(mail=%U))(class=posixAccount)
|
||||||
|
(memberOf=cn=mail,dc=auth,dc=hatecomputers,dc=club))
|
||||||
|
|
||||||
dovecot_user_filter: "(&(class=posixAccount)(uid=%u))"
|
dovecot_user_filter: >
|
||||||
|
(&(class=posixAccount)(uid=%u)
|
||||||
|
(memberOf=cn=mail,dc=auth,dc=hatecomputers,dc=club))
|
||||||
dovecot_auth_bind_userdn: "uid=%u,dc=auth,dc=hatecomputers,dc=club"
|
dovecot_auth_bind_userdn: "uid=%u,dc=auth,dc=hatecomputers,dc=club"
|
||||||
dovecot_user_attrs: "=mail=maildir:~/Maildir,uidNumber=uid,gidNumber=gid"
|
dovecot_user_attrs: "=mail=maildir:~/Maildir,uidNumber=uid,gidNumber=gid"
|
||||||
|
|
||||||
|
roundcube_default_host: "ssl://mail.hatecomputers.club"
|
||||||
|
roundcube_default_port: 993
|
||||||
|
roundcube_smtp_host: "ssl://mail.hatecomputers.club"
|
||||||
|
roundcube_smtp_port: 465
|
||||||
|
|
||||||
|
roundcube_oauth2_auth_uri: "https://auth.hatecomputers.club/ui/oauth2"
|
||||||
|
roundcube_oauth2_user_uri: >
|
||||||
|
https://auth.hatecomputers.club/oauth2/openid/roundcube/userinfo
|
||||||
|
roundcube_oauth2_token_uri: "https://auth.hatecomputers.club/oauth2/token"
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
mode: 0700
|
mode: 0700
|
||||||
|
|
||||||
- name: Ensure mail config volume exist
|
- name: Ensure mail config volume exist
|
||||||
file:
|
ansible.builtin.file:
|
||||||
path: /etc/docker/compose/mail/docker-data/dms/config
|
path: /etc/docker/compose/mail/docker-data/dms/config
|
||||||
state: directory
|
state: directory
|
||||||
owner: root
|
owner: root
|
||||||
|
@ -17,12 +17,12 @@
|
||||||
mode: 0700
|
mode: 0700
|
||||||
|
|
||||||
- name: Ensure mail entries volume exist with correct permission
|
- name: Ensure mail entries volume exist with correct permission
|
||||||
file:
|
ansible.builtin.file:
|
||||||
path: /etc/docker/compose/mail/docker-data/dms/mail-data/
|
path: /etc/docker/compose/mail/docker-data/dms/mail-data/
|
||||||
state: directory
|
state: directory
|
||||||
owner: root
|
owner: 5000
|
||||||
group: root
|
group: 5000
|
||||||
mode: 0777
|
mode: 0700
|
||||||
recurse: true
|
recurse: true
|
||||||
|
|
||||||
- name: Ensure dovecot ldap config exist
|
- name: Ensure dovecot ldap config exist
|
||||||
|
@ -41,6 +41,22 @@
|
||||||
group: root
|
group: root
|
||||||
mode: 0700
|
mode: 0700
|
||||||
|
|
||||||
|
- name: Ensure roundcube config volume exist
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /etc/docker/compose/mail/docker-data/roundcube/config
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0777
|
||||||
|
|
||||||
|
- name: Build roundcube oauth2 config
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: oauth2.inc.php.j2
|
||||||
|
dest: /etc/docker/compose/mail/docker-data/roundcube/config/oauth2.inc.php
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0777
|
||||||
|
|
||||||
- name: Build mail docker-compose.yml.j2
|
- name: Build mail docker-compose.yml.j2
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: docker-compose.yml.j2
|
src: docker-compose.yml.j2
|
||||||
|
|
|
@ -1,13 +1,32 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
roundcube:
|
||||||
|
image: roundcube/roundcubemail:latest
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ./docker-data/roundcube/www:/var/www/html
|
||||||
|
- ./docker-data/roundcube/db/sqlite:/var/roundcube/db
|
||||||
|
- ./docker-data/roundcube/config:/var/roundcube/config
|
||||||
|
ports:
|
||||||
|
- 127.0.0.1:9002:80
|
||||||
|
environment:
|
||||||
|
- ROUNDCUBEMAIL_DB_TYPE=sqlite
|
||||||
|
- ROUNDCUBEMAIL_SKIN=elastic
|
||||||
|
- ROUNDCUBEMAIL_DEFAULT_HOST={{ roundcube_default_host }}
|
||||||
|
- ROUNDCUBEMAIL_DEFAULT_PORT={{ roundcube_default_port }}
|
||||||
|
- ROUNDCUBEMAIL_SMTP_SERVER={{ roundcube_smtp_host }}
|
||||||
|
- ROUNDCUBEMAIL_SMTP_PORT={{ roundcube_smtp_port }}
|
||||||
|
|
||||||
mailserver:
|
mailserver:
|
||||||
image: ghcr.io/docker-mailserver/docker-mailserver:latest
|
image: ghcr.io/docker-mailserver/docker-mailserver:latest
|
||||||
container_name: mailserver
|
|
||||||
hostname: {{ mail_domain }}
|
hostname: {{ mail_domain }}
|
||||||
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- "0.0.0.0:25:25"
|
- 0.0.0.0:25:25
|
||||||
- "0.0.0.0:465:465"
|
- 0.0.0.0:465:465
|
||||||
- "0.0.0.0:587:587"
|
- 0.0.0.0:587:587
|
||||||
- "0.0.0.0:993:993"
|
- 0.0.0.0:993:993
|
||||||
volumes:
|
volumes:
|
||||||
- ./docker-data/dms/mail-data/:/var/mail/
|
- ./docker-data/dms/mail-data/:/var/mail/
|
||||||
- ./docker-data/dms/mail-state/:/var/mail-state/
|
- ./docker-data/dms/mail-state/:/var/mail-state/
|
||||||
|
@ -18,7 +37,7 @@ services:
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
environment:
|
environment:
|
||||||
- SSL_TYPE=letsencrypt
|
- SSL_TYPE=letsencrypt
|
||||||
- ENABLE_CLAMAV=1
|
- ENABLE_CLAMAV=0
|
||||||
- ENABLE_AMAVIS=1
|
- ENABLE_AMAVIS=1
|
||||||
- ENABLE_FAIL2BAN=1
|
- ENABLE_FAIL2BAN=1
|
||||||
- ENABLE_SASLAUTHD=1
|
- ENABLE_SASLAUTHD=1
|
||||||
|
@ -42,4 +61,6 @@ services:
|
||||||
- ENABLE_SASLAUTHD=1
|
- ENABLE_SASLAUTHD=1
|
||||||
- SASLAUTHD_MECHANISMS=ldap
|
- SASLAUTHD_MECHANISMS=ldap
|
||||||
- SASLAUTHD_LDAP_FILTER={{ sasl_ldap_filter }}
|
- SASLAUTHD_LDAP_FILTER={{ sasl_ldap_filter }}
|
||||||
restart: always
|
|
||||||
|
- ENABLE_OAUTH2=1
|
||||||
|
- OAUTH2_INTROSPECTION_URL={{ roundcube_oauth2_user_uri }}
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$config['oauth_provider'] = 'generic';
|
||||||
|
$config['oauth_provider_name'] = 'hatecomputers.club <3';
|
||||||
|
$config['oauth_client_id'] = '{{ roundcube_oauth2_client_id }}';
|
||||||
|
$config['oauth_client_secret'] = '{{ roundcube_oauth2_client_basic_secret }}';
|
||||||
|
$config['oauth_auth_uri'] = '{{ roundcube_oauth2_auth_uri }}';
|
||||||
|
$config['oauth_token_uri'] = '{{ roundcube_oauth2_token_uri }}';
|
||||||
|
$config['oauth_identity_uri'] = '{{ roundcube_oauth2_user_uri }}';
|
||||||
|
|
||||||
|
$config['oauth_verify_peer'] = true;
|
||||||
|
|
||||||
|
$config['oauth_scope'] = 'email openid profile';
|
||||||
|
$config['oauth_identity_fields'] = ['email'];
|
||||||
|
|
||||||
|
$config['oauth_login_redirect'] = true;
|
||||||
|
|
||||||
|
$config['force_https'] = true;
|
||||||
|
$config['use_https'] = true;
|
|
@ -8,3 +8,15 @@ postconf -e 'smtpd_sasl_auth_enable = yes'
|
||||||
postconf -e 'broken_sasl_auth_clients = yes'
|
postconf -e 'broken_sasl_auth_clients = yes'
|
||||||
|
|
||||||
echo 'auth_username_format = %Ln' >> /etc/dovecot/conf.d/10-auth.conf
|
echo 'auth_username_format = %Ln' >> /etc/dovecot/conf.d/10-auth.conf
|
||||||
|
|
||||||
|
echo 'username_format = %Ln' >> /etc/dovecot/dovecot-oauth2.conf.ext
|
||||||
|
|
||||||
|
echo "passdb {
|
||||||
|
driver = ldap
|
||||||
|
args = /etc/dovecot/dovecot-ldap.conf.ext
|
||||||
|
}
|
||||||
|
|
||||||
|
userdb {
|
||||||
|
driver = static
|
||||||
|
args = uid=5000 gid=5000 home=/var/mail/%u
|
||||||
|
}" > /etc/dovecot/conf.d/auth-ldap.conf.ext
|
||||||
|
|
|
@ -14,7 +14,7 @@ server {
|
||||||
ssl_certificate_key /etc/letsencrypt/live/mail.hatecomputers.club/privkey.pem;
|
ssl_certificate_key /etc/letsencrypt/live/mail.hatecomputers.club/privkey.pem;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
proxy_pass http://127.0.0.1:8331;
|
proxy_pass http://127.0.0.1:9002;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
cloudflare_api_token
|
cloudflare_api_token
|
||||||
certbot_email
|
certbot_email
|
||||||
email_ldap_api_token
|
email_ldap_api_token
|
||||||
|
roundcube_oauth2_client_id
|
||||||
|
roundcube_oauth2_client_basic_secret
|
||||||
|
|
Loading…
Reference in New Issue