mailserver: add broken sogo

This commit is contained in:
Ruben Hensen
2026-03-15 10:58:50 +01:00
parent 9581f1bb3e
commit c8055467d6
21 changed files with 601 additions and 44 deletions
@@ -0,0 +1,11 @@
---
sogo_db_name: "sogo"
sogo_db_user: "sogo"
sogo_db_password: "{{ vault_sogo_db_password }}"
sogo_imap_server: "127.0.0.1"
sogo_smtp_server: "127.0.0.1"
sogo_mail_domain: "rubenhensen.nl"
sogo_time_zone: "Europe/Amsterdam"
sogo_page_title: "Mail - rubenhensen.nl"
@@ -0,0 +1,5 @@
---
- name: restart sogo
ansible.builtin.systemd:
name: sogo
state: restarted
@@ -0,0 +1,88 @@
---
- name: Install PostgreSQL
ansible.builtin.apt:
name:
- postgresql
- postgresql-client
- python3-psycopg2
state: present
- name: Ensure PostgreSQL is running
ansible.builtin.systemd:
name: postgresql
enabled: true
state: started
- name: Create SOGo database user
become: true
become_user: postgres
community.postgresql.postgresql_user:
name: "{{ sogo_db_user }}"
password: "{{ sogo_db_password }}"
- name: Create SOGo database
become: true
become_user: postgres
community.postgresql.postgresql_db:
name: "{{ sogo_db_name }}"
owner: "{{ sogo_db_user }}"
- name: Grant SOGo user read access to Stalwart accounts
become: true
become_user: postgres
community.postgresql.postgresql_privs:
database: "stalwart"
roles: "{{ sogo_db_user }}"
type: table
objs: accounts,emails
privs: SELECT
- name: Download SOGo repository key
ansible.builtin.shell:
cmd: >
wget -qO- "https://keys.openpgp.org/vks/v1/by-fingerprint/74FFC6D72B925A34B5D356BDF8A27B36A6E2EAE9"
| gpg --dearmor > /etc/apt/trusted.gpg.d/sogo.gpg
creates: /etc/apt/trusted.gpg.d/sogo.gpg
- name: Add SOGo nightly repository
ansible.builtin.apt_repository:
repo: "deb https://packages.sogo.nu/nightly/5/ubuntu/ {{ ansible_facts['distribution_release'] }} {{ ansible_facts['distribution_release'] }}"
filename: sogo
state: present
- name: Install SOGo and dependencies
ansible.builtin.apt:
name:
- sogo
- sogo-activesync
- sope4.9-gdl1-postgresql
state: present
update_cache: true
- name: Disable Apache (installed as SOGo dependency, Nginx is used instead)
ansible.builtin.systemd:
name: apache2
enabled: false
state: stopped
failed_when: false
- name: Deploy SOGo configuration
ansible.builtin.template:
src: sogo.conf.j2
dest: /etc/sogo/sogo.conf
owner: sogo
group: sogo
mode: "0640"
notify: restart sogo
- name: Enable and start SOGo
ansible.builtin.systemd:
name: sogo
enabled: true
state: started
- name: Enable and start memcached
ansible.builtin.systemd:
name: memcached
enabled: true
state: started
@@ -0,0 +1,45 @@
{
SOGoTimeZone = "{{ sogo_time_zone }}";
SOGoPageTitle = "{{ sogo_page_title }}";
SOGoLanguage = "English";
SOGoMailDomain = "{{ sogo_mail_domain }}";
SOGoIMAPServer = "imaps://{{ sogo_imap_server }}:993/?tls=YES&tlsVerifyMode=none";
SOGoSMTPServer = "smtp://{{ sogo_smtp_server }}:587/?tls=YES&tlsVerifyMode=none";
SOGoSMTPAuthenticationType = "PLAIN";
SOGoIMAPAclConformsToIMAPExt = YES;
SOGoForceExternalLoginWithEmail = YES;
SOGoUserSources = (
{
type = sql;
id = directory;
viewURL = "postgresql://{{ sogo_db_user }}:{{ sogo_db_password }}@127.0.0.1:5432/stalwart/sogo_users";
canAuthenticate = YES;
isAddressBook = NO;
LoginFieldNames = ("mail");
userPasswordAlgorithm = "sha512-crypt";
}
);
SOGoProfileURL = "postgresql://{{ sogo_db_user }}:{{ sogo_db_password }}@127.0.0.1:5432/{{ sogo_db_name }}/sogo_user_profile";
OCSFolderInfoURL = "postgresql://{{ sogo_db_user }}:{{ sogo_db_password }}@127.0.0.1:5432/{{ sogo_db_name }}/sogo_folder_info";
OCSSessionsFolderURL = "postgresql://{{ sogo_db_user }}:{{ sogo_db_password }}@127.0.0.1:5432/{{ sogo_db_name }}/sogo_sessions_folder";
OCSEMailAlarmsFolderURL = "postgresql://{{ sogo_db_user }}:{{ sogo_db_password }}@127.0.0.1:5432/{{ sogo_db_name }}/sogo_alarms_folder";
OCSStoreURL = "postgresql://{{ sogo_db_user }}:{{ sogo_db_password }}@127.0.0.1:5432/{{ sogo_db_name }}/sogo_store";
OCSAclURL = "postgresql://{{ sogo_db_user }}:{{ sogo_db_password }}@127.0.0.1:5432/{{ sogo_db_name }}/sogo_acl";
OCSCacheFolderURL = "postgresql://{{ sogo_db_user }}:{{ sogo_db_password }}@127.0.0.1:5432/{{ sogo_db_name }}/sogo_cache_folder";
SOGoAppointmentSendEMailNotifications = YES;
SOGoEnableEMailAlarms = YES;
SOGoMemcachedHost = "127.0.0.1";
SOGoCalendarDefaultRoles = (
PublicViewer,
ConfidentialDAccessor
);
SOGoSuperUsernames = ("admin");
SOGoFirstDayOfWeek = 1;
}