cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

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:
Mapps/talos_cluster/mailserver/kustomization.yaml | 8+++++---
Aapps/talos_cluster/mailserver/mailman-secrets.yaml | 121+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aapps/talos_cluster/mailserver/mailman.yaml | 220+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mapps/talos_cluster/mailserver/release.yaml | 18++++++++++++++++++
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