commit 416c6f417290020d10ff6c488e0c4e2234f3f89c
parent 3a52ca0efbc26425c0c28d03f52bc20590141c5b
Author: MTRNord <MTRNord@users.noreply.github.com>
Date: Wed, 1 Oct 2025 12:12:57 +0200
Try setting up mailman
Diffstat:
4 files changed, 364 insertions(+), 3 deletions(-)
diff --git a/apps/talos_cluster/mailserver/kustomization.yaml b/apps/talos_cluster/mailserver/kustomization.yaml
@@ -8,11 +8,13 @@ resources:
- release.yaml
- routing.yaml
- mta-sts-deployment.yaml
+ - mailman-secrets.yaml
+ - mailman.yaml
configMapGenerator:
- name: mta-sts-content
namespace: mailserver
files:
- - mta-sts.txt=mta-sts.txt
+ - mta-sts.txt=mta-sts.txt
options:
- labels:
- app: mta-sts-server
+ labels:
+ app: mta-sts-server
diff --git a/apps/talos_cluster/mailserver/mailman-secrets.yaml b/apps/talos_cluster/mailserver/mailman-secrets.yaml
@@ -0,0 +1,121 @@
+apiVersion: v1
+kind: Secret
+metadata:
+ name: mailman-passwords
+ namespace: mailserver
+type: Opaque
+stringData:
+ apikey: ENC[AES256_GCM,data:Nn6OywrkJ8gF5qdomU8tSvbj5teBUhaQ1Et5EUq7bAR46/LXYB5yfxDRqAxDLfZrLgkT+qTiNl42TBmBP0HpfQ==,iv:vrkDtft4+pr7pUrNWGWQy/7qnTdFaY1JQn5U0frcIMs=,tag:aSz5TLNzb0+J5ozELoEHCg==,type:str]
+ restpassword: ENC[AES256_GCM,data:wYa9hMvakZL6/WXUIdBzSbEzkoLJl9x8utoYkl2OSw6N4lxAcSTGPceEolvX1H6eP0IL1izb53PqrQX+RXvEKQ==,iv:mVzJy7Qj7wTOHFP2jQ3/SAkZQfkBfv7DpnSc312Ct+4=,tag:YX6KBHtqelWA15+zN7h6LA==,type:str]
+ websecretey: ENC[AES256_GCM,data:UTCrTXMofiVWapYMKcH5yhcESUAYn6Ox78AYW75wV9UcUZkiGSWQe6P4XQOfXA9yVFdS5lYFVo/AcbIVQNQW3Q==,iv:m+aeF9LUI+j0rfmIoAlGLs1+dp4e7KpEXjWW/WjSp6w=,tag:3vYn4RzMI9FAGxp10ueY3A==,type:str]
+ smtp_user: ENC[AES256_GCM,data:zStLMBV01KeTOGZymCbg3tigh4F5OqJqEHaWvFIs,iv:RHuX1YbWZvtlUQeDZc5lr7nmeEWR4WyJnU1ej0E7ges=,tag:j15FFGP2TUm4OpFuIohCZw==,type:str]
+ smtp_password: ENC[AES256_GCM,data:lM2lhsEwlMQv,iv:6Ahff49anwmNlrE+nuXAjaUzNgEPwICbgLH0lXDpph8=,tag:x3atRdNfkKhZSQMQe1U7Kg==,type:str]
+sops:
+ kms: []
+ gcp_kms: []
+ azure_kv: []
+ hc_vault: []
+ age:
+ - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh
+ enc: |
+ -----BEGIN AGE ENCRYPTED FILE-----
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrV2o3NTAzUlhzTys3S2Mx
+ cmRTWEZVMVhsVVVSRjdiT2dSdnNFMTB2a1NZCnNqcjUxcjdTTWVHL2RFYkdjZTFO
+ TFJuVkJnR1VLQzRvN0s3M0JDZXEzc2MKLS0tIGQ0aVBDL0trYWdTZkkrZHdQaFdR
+ cEVaWUlORnM1WG5qWC9BbDkvVXg0SFkKCOuFWA89AuC61+AcorA0q8NFQYaDd3TH
+ ZtBTenqkggetLnGcAmNg1wJAyEpGHVWHUh5Hfc7/y+o3l9uVyFAaBQ==
+ -----END AGE ENCRYPTED FILE-----
+ lastmodified: "2025-10-01T10:11:04Z"
+ mac: ENC[AES256_GCM,data:Kp5L+ONRsMteDRPDhbY9zaUIdflFFkuSvqum39nYiDFRM6e9/6khOcTPiO6G8UzIc5b5Snw7uZUf3qmX6gxz92v18+iAtWhjyE9Q7JdxBSO+f441QHN22D+ec/IBGx+07YpjQgX0vJGHaIKsenAzW6Cz6abaCrQYczhXHLfBZgs=,iv:Y2V5xQv/YushoxI4rY+2jDacNCz0JdsgxokqZZ3sOQM=,tag:zjzUfPgnqLIMrliN/A2C9w==,type:str]
+ pgp: []
+ encrypted_regex: ^(harborAdminPassword|kimaiAppSecret|kimaiAdminPassword|GITHUB_CLIENT_ID|GITHUB_CLIENT_SECRET|GITHUB_PRIVATE_KEY|woosh|root_password|rspamd_password|pgdb_password|matrix_access_token|pgdb_remote_url|hmac_secret_key|adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$
+ version: 3.9.1
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: mailman-extra
+ namespace: mailserver
+type: Opaque
+stringData:
+ mailman-extra.cfg: ENC[AES256_GCM,data:kSx4KcKVKMMCSeNlrfjlc6rTVQPA0Qyfi86buZKX9Dnbq7CTo0Oc+dyhjQ==,iv:RK+Uq1XPqTbtip7qlzZb6+Xb2aRHCSWfRVooUp1beWA=,tag:/lnhTvfP2qsZPmYR2lAOzA==,type:str]
+ settings_local.py: ENC[AES256_GCM,data:WyLoxP/yh1bc5LEj66QrPyj5fILLzxg7k6hqnYsjZF3ljJZmtAQSr+i0Wmr7WrZSmxMvYfMhKHTCPfsWiHEQP5cT77e3Mu9O+QWt9aBPSWCDX2WzxUeQNxNOVmyyQ0StX0lw2C4uCNtQw63a+5XKN16m7A3y341cCjQpAqMHp4azWx4GVjtlp3y2kjdF7Ax7nu1n0L7M+U2OuNAf96lnCniis2WDKTqLqdZgkxJFfwyUF5HKvqCbSN3aItvzJOnpuLIjJw4eneH0zHgw7AzsOOSC/nTxNnCxOMFzLFYA/5kyycuK4K2LbHq3lWnCDZyYVfKeFP9LQPkBOQDCSHD0gk4pkHTvI798VcNsPZI0mY1mIn3uZD+8ve5G2Q29O4pumD+e8h6uwawyeNAx/SQiyeUyDkPx+E8Utu34NuyDtu5pxv//HNchNQmioq/uksKMdLdcXzJwpNaAaynTd/45nvd6ctDBTivZ9hZx/AHKXZhEIomTB3sD+LHK5VME4Rs8H3ynxVEELQZ+oOWWqpQaHmOvYMiHe29j50Ry9SfwEI46pmNW5mfVPubkpVNryLpbCwof5AwjsNQ=,iv:iScEORLnu89DW8d1pjG/eUWE4s+KFpt0TZRZvE5xGpg=,tag:M2gnR3SmzeyV39SXEFs66A==,type:str]
+ chown: ENC[AES256_GCM,data:0sJM2HURmbji+VwFrInNmq9hWfZuajuVZ+VocBzaBmAt7Xk=,iv:kPoVQQYZotJQ5FXx7TcYyAY+HYNfczGZkiokSOAEzuM=,tag:JfCGmgUvZmzgkGUijk8/kQ==,type:str]
+sops:
+ kms: []
+ gcp_kms: []
+ azure_kv: []
+ hc_vault: []
+ age:
+ - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh
+ enc: |
+ -----BEGIN AGE ENCRYPTED FILE-----
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrV2o3NTAzUlhzTys3S2Mx
+ cmRTWEZVMVhsVVVSRjdiT2dSdnNFMTB2a1NZCnNqcjUxcjdTTWVHL2RFYkdjZTFO
+ TFJuVkJnR1VLQzRvN0s3M0JDZXEzc2MKLS0tIGQ0aVBDL0trYWdTZkkrZHdQaFdR
+ cEVaWUlORnM1WG5qWC9BbDkvVXg0SFkKCOuFWA89AuC61+AcorA0q8NFQYaDd3TH
+ ZtBTenqkggetLnGcAmNg1wJAyEpGHVWHUh5Hfc7/y+o3l9uVyFAaBQ==
+ -----END AGE ENCRYPTED FILE-----
+ lastmodified: "2025-10-01T10:11:04Z"
+ mac: ENC[AES256_GCM,data:Kp5L+ONRsMteDRPDhbY9zaUIdflFFkuSvqum39nYiDFRM6e9/6khOcTPiO6G8UzIc5b5Snw7uZUf3qmX6gxz92v18+iAtWhjyE9Q7JdxBSO+f441QHN22D+ec/IBGx+07YpjQgX0vJGHaIKsenAzW6Cz6abaCrQYczhXHLfBZgs=,iv:Y2V5xQv/YushoxI4rY+2jDacNCz0JdsgxokqZZ3sOQM=,tag:zjzUfPgnqLIMrliN/A2C9w==,type:str]
+ pgp: []
+ encrypted_regex: ^(harborAdminPassword|kimaiAppSecret|kimaiAdminPassword|GITHUB_CLIENT_ID|GITHUB_CLIENT_SECRET|GITHUB_PRIVATE_KEY|woosh|root_password|rspamd_password|pgdb_password|matrix_access_token|pgdb_remote_url|hmac_secret_key|adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$
+ version: 3.9.1
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: mailmancore
+ namespace: mailserver
+type: Opaque
+stringData:
+ url: ENC[AES256_GCM,data:GLpTglbXEI7VgpNGiW9GYh1NL021qB543zKPH6/+Nw4VNM2jFGOwTJHnhmEeJPuwpbTlv7ZzxrlHy6GuG9I/ZGItuEAQ/mRfqjar+1cuFR3g2cjuxtQhT779w4ZJcAhGU/EZIw16xH4MounIr8cDMtjouq69SKex9j7OzMFDIQcsqqCL1QLNTXAgTJ1ik3IKKw==,iv:4vLph8qUXmvjKGfPW7n5ILZ/m/IVnnozv2v3nZKxSIU=,tag:Rb1sEkv6xICZMypQ21bDCg==,type:str]
+sops:
+ kms: []
+ gcp_kms: []
+ azure_kv: []
+ hc_vault: []
+ age:
+ - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh
+ enc: |
+ -----BEGIN AGE ENCRYPTED FILE-----
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrV2o3NTAzUlhzTys3S2Mx
+ cmRTWEZVMVhsVVVSRjdiT2dSdnNFMTB2a1NZCnNqcjUxcjdTTWVHL2RFYkdjZTFO
+ TFJuVkJnR1VLQzRvN0s3M0JDZXEzc2MKLS0tIGQ0aVBDL0trYWdTZkkrZHdQaFdR
+ cEVaWUlORnM1WG5qWC9BbDkvVXg0SFkKCOuFWA89AuC61+AcorA0q8NFQYaDd3TH
+ ZtBTenqkggetLnGcAmNg1wJAyEpGHVWHUh5Hfc7/y+o3l9uVyFAaBQ==
+ -----END AGE ENCRYPTED FILE-----
+ lastmodified: "2025-10-01T10:11:04Z"
+ mac: ENC[AES256_GCM,data:Kp5L+ONRsMteDRPDhbY9zaUIdflFFkuSvqum39nYiDFRM6e9/6khOcTPiO6G8UzIc5b5Snw7uZUf3qmX6gxz92v18+iAtWhjyE9Q7JdxBSO+f441QHN22D+ec/IBGx+07YpjQgX0vJGHaIKsenAzW6Cz6abaCrQYczhXHLfBZgs=,iv:Y2V5xQv/YushoxI4rY+2jDacNCz0JdsgxokqZZ3sOQM=,tag:zjzUfPgnqLIMrliN/A2C9w==,type:str]
+ pgp: []
+ encrypted_regex: ^(harborAdminPassword|kimaiAppSecret|kimaiAdminPassword|GITHUB_CLIENT_ID|GITHUB_CLIENT_SECRET|GITHUB_PRIVATE_KEY|woosh|root_password|rspamd_password|pgdb_password|matrix_access_token|pgdb_remote_url|hmac_secret_key|adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$
+ version: 3.9.1
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: mailmanweb
+ namespace: mailserver
+type: Opaque
+stringData:
+ url: ENC[AES256_GCM,data:H8VZQa97vLvSQ+ZJBPoUYGzjF7JeGPVEoe1OTBCrUS4nMnpi2w7+UD19u1lzRJKeiVAGVdHALH0xknEs9NcpFA3CBXQkCWstSaqqqabs7rRuzv+/VBhgQVTMmUg9wONlfcZXjX+UiE4WemiD0lDef5zV3QJt+wN+o49ZhoA4zYK1tH/YVqijCBxgpjwWUIrDdg==,iv:EjW0fQAHSPFn1LfxoVhBivJs7/rLpz+twjL7Fh1ayAQ=,tag:xuurL3r3oKe3JqshDH4Y0g==,type:str]
+sops:
+ kms: []
+ gcp_kms: []
+ azure_kv: []
+ hc_vault: []
+ age:
+ - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh
+ enc: |
+ -----BEGIN AGE ENCRYPTED FILE-----
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrV2o3NTAzUlhzTys3S2Mx
+ cmRTWEZVMVhsVVVSRjdiT2dSdnNFMTB2a1NZCnNqcjUxcjdTTWVHL2RFYkdjZTFO
+ TFJuVkJnR1VLQzRvN0s3M0JDZXEzc2MKLS0tIGQ0aVBDL0trYWdTZkkrZHdQaFdR
+ cEVaWUlORnM1WG5qWC9BbDkvVXg0SFkKCOuFWA89AuC61+AcorA0q8NFQYaDd3TH
+ ZtBTenqkggetLnGcAmNg1wJAyEpGHVWHUh5Hfc7/y+o3l9uVyFAaBQ==
+ -----END AGE ENCRYPTED FILE-----
+ lastmodified: "2025-10-01T10:11:04Z"
+ mac: ENC[AES256_GCM,data:Kp5L+ONRsMteDRPDhbY9zaUIdflFFkuSvqum39nYiDFRM6e9/6khOcTPiO6G8UzIc5b5Snw7uZUf3qmX6gxz92v18+iAtWhjyE9Q7JdxBSO+f441QHN22D+ec/IBGx+07YpjQgX0vJGHaIKsenAzW6Cz6abaCrQYczhXHLfBZgs=,iv:Y2V5xQv/YushoxI4rY+2jDacNCz0JdsgxokqZZ3sOQM=,tag:zjzUfPgnqLIMrliN/A2C9w==,type:str]
+ pgp: []
+ encrypted_regex: ^(harborAdminPassword|kimaiAppSecret|kimaiAdminPassword|GITHUB_CLIENT_ID|GITHUB_CLIENT_SECRET|GITHUB_PRIVATE_KEY|woosh|root_password|rspamd_password|pgdb_password|matrix_access_token|pgdb_remote_url|hmac_secret_key|adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$
+ version: 3.9.1
diff --git a/apps/talos_cluster/mailserver/mailman.yaml b/apps/talos_cluster/mailserver/mailman.yaml
@@ -0,0 +1,220 @@
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ name: mailman
+ namespace: mailserver
+spec:
+ serviceName: mailman
+ replicas: 1
+ selector:
+ matchLabels:
+ app: mailman
+ template:
+ metadata:
+ labels:
+ app: mailman
+ spec:
+ hostAliases:
+ - ip: 0.0.0.0
+ hostnames:
+ - mailman.mailserver.svc.cluster.local
+ - ip: 127.0.0.1
+ hostnames:
+ - mailman-web
+ containers:
+ - name: core
+ image: maxking/mailman-core:0.4
+ ports:
+ - name: api
+ containerPort: 8001
+ - name: lmtp
+ containerPort: 8024
+ env:
+ - name: DATABASE_URL
+ valueFrom:
+ secretKeyRef:
+ name: mailmancore
+ key: url
+ - name: DATABASE_TYPE
+ value: postgres
+ - name: DATABASE_CLASS
+ value: mailman.database.postgresql.PostgreSQLDatabase
+ - name: HYPERKITTY_API_KEY
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: apikey
+ - name: MAILMAN_REST_USER
+ value: restadm
+ - name: MAILMAN_REST_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: restpassword
+ - name: SMTP_HOST
+ value: mail.midnightthoughts.space
+ - name: SMTP_PORT
+ value: "465"
+ - name: SMTP_USE_TLS
+ value: "true"
+ - name: SMTP_USER
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: smtp_user
+ - name: SMTP_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: smtp_password
+ - name: MTA
+ value: postfix
+ - name: MM_HOSTNAME
+ value: mailman.mailserver.svc.cluster.local
+ - name: HYPERKITTY_URL
+ value: http://localhost:8000/hyperkitty
+ volumeMounts:
+ - name: mailman-opt
+ mountPath: /opt/mailman
+ - name: mailman-extra
+ mountPath: /opt/mailman/mailman-extra.cfg
+ subPath: mailman-extra.cfg
+ - name: mailman-extra
+ mountPath: /usr/bin/chown
+ subPath: chown
+ - name: web
+ image: maxking/mailman-web:0.4
+ ports:
+ - name: http
+ containerPort: 8000
+ - name: uwsgi
+ containerPort: 8080
+ #command:
+ # - tail
+ #args:
+ # - -f
+ # - /dev/null
+ env:
+ - name: DATABASE_URL
+ valueFrom:
+ secretKeyRef:
+ name: mailmanweb
+ key: url
+ - name: DATABASE_TYPE
+ value: postgres
+ - name: DATABASE_CLASS
+ value: mailman.database.postgresql.PostgreSQLDatabase
+ - name: HYPERKITTY_API_KEY
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: apikey
+ - name: MAILMAN_REST_USER
+ value: restadm
+ - name: MAILMAN_REST_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: restpassword
+ - name: SECRET_KEY
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: websecretkey
+ - name: POSTORIUS_TEMPLATE_BASE_URL
+ value: http://localhost:8000/
+ # serving static files by uwsgi
+ - name: UWSGI_STATIC_MAP.
+ value: /static=/opt/mailman-web-data/static
+ - name: MAILMAN_ADMIN_USER
+ value: admin
+ - name: MAILMAN_ADMIN_EMAIL
+ value: mtrnord@nordgedanken.dev
+ - name: MAILMAN_HOST_IP
+ value: 127.0.0.1
+ - name: MAILMAN_HOSTNAME
+ value: localhost
+ - name: SERVE_FROM_DOMAIN
+ value: lists.midnightthoughts.space
+ - name: MAILMAN_REST_URL # MAILMAN_REST_API_URL is set from this variable in settings.
+ value: http://127.0.0.1:8001
+ - name: MAILMAN_REST_API_USER
+ value: restadm
+ - name: MAILMAN_REST_API_PASS
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: restpassword
+ - name: SMTP_HOST
+ value: mail.midnightthoughts.space
+ - name: SMTP_PORT
+ value: "465"
+ - name: SMTP_USE_TLS
+ value: "true"
+ - name: SMTP_USER
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: smtp_user
+ - name: SMTP_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: mailman-passwords
+ key: smtp_password
+ # otherwise django cannot find the mysql driver.
+ #- name: DYLD_LIBRARY_PATH
+ # value: /usr/local/mysql/lib/
+
+ volumeMounts:
+ - name: mailman-web
+ mountPath: /opt/mailman-web-data
+ - name: mailman-extra
+ mountPath: /opt/mailman-web-data/settings_local.py
+ subPath: settings_local.py
+ - name: mailman-extra
+ mountPath: /usr/bin/chown
+ subPath: chown
+ volumes:
+ - name: mailman-extra
+ configMap:
+ name: mailman-extra
+ defaultMode: 0555
+ volumeClaimTemplates:
+ - metadata:
+ name: mailman-opt
+ spec:
+ volumeName: mailman-opt
+ accessModes:
+ - ReadWriteMany
+ resources:
+ requests:
+ storage: 10Gi
+ - metadata:
+ name: mailman-web
+ spec:
+ volumeName: mailman-web
+ accessModes:
+ - ReadWriteMany
+ resources:
+ requests:
+ storage: 10Gi
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: mailman
+ namespace: mailserver
+spec:
+ type: ClusterIP
+ selector:
+ app: mailman
+ ports:
+ - name: api
+ port: 8001
+ - name: lmtp
+ port: 8024
+ - name: http
+ port: 8000
+ - name: uwsgi
+ port: 8080
diff --git a/apps/talos_cluster/mailserver/release.yaml b/apps/talos_cluster/mailserver/release.yaml
@@ -317,6 +317,12 @@ spec:
{{- if .Values.proxyProtocol.enabled }}
postscreen_cache_map = proxy:btree:$data_directory/postscreen_12525_cache
{{- end }}
+ owner_request_special = no
+ transport_maps = hash:/etc/postfix/transport_maps regexp:/etc/postfix/mailman/postfix_lmtp
+ local_recipient_maps = proxy:unix:passwd.byname $alias_maps regexp:/etc/postfix/mailman/postfix_lmtp
+ virtual_mailbox_maps = texthash:/etc/postfix/vmailbox regexp:/etc/postfix/mailman/postfix_lmtp
+ # postfix warning: 'do not list the domain example.com in BOTH virtual_mailbox_domains and relay_domains'
+ #relay_domains = ${{$compatibility_level} < {2} ? {$mydestination} : {}} regexp:/etc/postfix/mailman/postfix_domains
user-patches.sh:
create: true
path: user-patches.sh
@@ -339,6 +345,9 @@ spec:
# Enable PROXY Protocol support (different setting as port 25 is handled via postscreen), optionally configure a `syslog_name` to distinguish in logs:
postconf -P 12525/inet/postscreen_upstream_proxy_protocol=haproxy 12525/inet/postscreen_cache_map=proxy:btree:\$data_directory/postscreen_12525_cache 12525/inet/syslog_name=postfix/smtpd-proxyprotocol
{{- end }}
+ echo "10.0.0.0/8
+ 172.16.0.0/12
+ 192.168.0.0/16" >> /etc/opendkim/TrustedHosts
custom-commands.conf:
create: true
path: rspamd/custom-commands.conf
@@ -361,3 +370,12 @@ spec:
selector = "mail";
}
}
+ extraVolumeMounts:
+ - name: mailman-opt
+ mountPath: /etc/postfix/mailman
+ subPath: var/data
+ readOnly: true
+ extraVolumes:
+ - name: mailman-opt
+ persistentVolumeClaim:
+ claimName: mailman-opt-mailman-0