Skip to content

Commit 3c75064

Browse files
committed
Add mail
1 parent 6217d67 commit 3c75064

File tree

12 files changed

+359
-0
lines changed

12 files changed

+359
-0
lines changed

argocd/applications/mail.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: argoproj.io/v1alpha1
2+
kind: Application
3+
metadata:
4+
name: mail
5+
spec:
6+
project: default
7+
source:
8+
repoURL: git@github.com:hashbang/gitops.git
9+
path: mail/
10+
targetRevision: HEAD
11+
destination:
12+
server: https://kubernetes.default.svc
13+
namespace: mail

argocd/kustomization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ resources:
1818
- applications/external-dns.yaml
1919
- applications/ingress-nginx.yaml
2020
- applications/ircd.yaml
21+
- applications/mail.yaml
2122
- applications/monitoring.yaml
2223
- applications/userdb-api.yaml
2324
- applications/webirc.yaml

cert-manager-issuers/prod_issuer.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ spec:
1515
- selector:
1616
dnsZones:
1717
- "irc.hashbang.sh"
18+
- "mail.hashbang.sh"
1819
dns01:
1920
route53:
2021
region: us-west-2

mail/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Mail
2+
3+
https://github.com/hashbang/docker-postfix
4+
5+
Delivers mail to the shell servers

mail/aliases.enc.yaml

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: mail-aliases
5+
type: Opaque
6+
stringData:
7+
aliases: ENC[AES256_GCM,data:zTwzx4D4eS7cq9bjCeca9IB7pwJuHGysnxgbgNhwHLJv0e4A7EnvlFP5f/zRG/HKNIay/m+ygxwaRg/PwMf1kn6mJpoXym/cqAv4ZJN6etZw/c/WOipCrm1mf9sZB0DLAB/PvvEEy09Q0RUxOIcPg/jxMnEAlbann0LLJcaXYxvAZYyNHjCDvqsxZ+NzZU7bnkMGII1Mv8tc6vLt605yQG5KEaOs5lbiU55XZOUyqTEzHpbyhM6hDSFC5Wz71FnwPQqLaaAGHyiCg77XWtJIzLvrEQofxZg8YsG8R1F6CXoNfQJ5Ka+rzL6YnLk39JAT6KpV8CQaGtVONthpapDEFz5eJi8qgUKFyoEIG/122Yb5RJkZCgoZiXPt2GkCgYSjq3UHfUIZoP/R1uiuOh0hUa0nIXKe3gb3hmzOo/fUjttgF0BIyA48CSAJeEYaoDBIvE5hK7FmfA8RJ6tWvtWYOINwYSGIxIme9TGPJ6Ym7cOp2c4Bu0i0HX4d5amJQ1uaDSQW1jbPo/4kr/x9pJaL9E+rJsDdktnuJIXII0vJqsmZVaAhEltZDUNY6KR51VZejh3hzd3k9MrBOqFOa/KBrOyKsXZCJkU8jnlBBF/g6UwAft5e3Dms5PpAIxm9p6LXXkBmUu8Zgzs=,iv:YhRtkz4oL8wqN3W+CQyhwGwhNYKsmEQvga62wzc+gBI=,tag:9rkZ3caaI915ykCFchdxpA==,type:str]
8+
sops:
9+
kms: []
10+
gcp_kms: []
11+
azure_kv: []
12+
lastmodified: '2020-06-05T04:05:09Z'
13+
mac: ENC[AES256_GCM,data:MV6KgQQfm039vRGE6eszA0PDmtkDe1Qv0zzjFd728iH/8xVpwsvn2s6TL3/N0huWMWFRbh6M9kU2xGA87vNOrqbUMuEIwi01Z2v5Cuu4EalBHafEaFE68UygFOB+VDO7WQiZmEkHLUY0za7LfinZ3QbPikX8GrXMjaHjDfYtqvo=,iv:6R9m5hVXFAtXokwJHnd9SbfNXc4eKdgohHWBlTdrLkI=,tag:eHUROJe44qeYuvPwdqI0NQ==,type:str]
14+
pgp:
15+
- created_at: '2020-05-27T02:00:39Z'
16+
enc: |
17+
-----BEGIN PGP MESSAGE-----
18+
19+
hQIMA+pWRuJw67SWAQ/9GXIZFEp/v1IT68Ro9LOMEtxoi1rmzmJRYMca5Jgt7xf+
20+
V0Hyfpo0fl3/xZaLwd0bIBaE0pjnsPCwzCd+IologGctDD5/PwOtdXm6WS1Lh6vH
21+
tvVOAo63RnyGqlwO2cXkKIOCzIF7LKJi8TxE0M4cEK2RkcYz7ukfvzyrbm+jLAYo
22+
3Ve2k9GL72VPLwo+o+WbrhGjqsf6Qy5D9OT45FPNXCC2EF6zDyRrJwYtRFU+lZcB
23+
bBQc2aE90fVSxxMQ18VNW7VNFAOfMANPSOilrIfzoyZE8lxgAExgXRyrwRuVxKfL
24+
UAws9jrXz72AYTkVoQ3tWJP3MgtnbdTS9A8kUJI0hIjnKTsUKwBZv3SJxvKBFV0y
25+
4Qnz/cXw0qYp/6zBEaM0tOq04LqmU8fuPtPZg4V9TKVCoMaCQrvgLj5nWS6UiIhF
26+
1LOQSxPEjBPApvht4bRexfOGIdMxJ7uqZTfBkpa1McoPQFvFLmY9TT9IHjqkhj2g
27+
kLpDX/oKskHP9/4C4QJa93az983GITDER4AhMmMN6P21LTnlRpzxQ1wDryzF4HCW
28+
1lixCt8KSM1qA2yAnrdzf0spmYl1Hh948AzDuMI6YoMJkDnyKsMH0vboOQnidTjK
29+
WRMxUAoYhTKoJ3WXL1csakLFMMtbtIPWPWrH4lnbXA9WK2f50X5Ka7vkMkvdsrfS
30+
XgFMqlMJ/AvlaQKJfqtca0xn47K9+8KMx9iroBpT4H8ejFA76JpTx9MQTgb+voUO
31+
nQ0Y+2qr27/lyR2Esv7q+jkXkGhNlpL0o2nE2ZRpUJ9bV713KJCSSViBPe87Npc=
32+
=ZQHM
33+
-----END PGP MESSAGE-----
34+
fp: 1FD6667A0808D4D48BDB8757A61B48D8288FCF8A
35+
- created_at: '2020-05-27T02:00:39Z'
36+
enc: |-
37+
-----BEGIN PGP MESSAGE-----
38+
39+
wcFMA4FedWMNSzdLARAAoj7C/JHMHvgNkVqs+c0JrgbrIlue6GnmPrQIPeyZpqxw
40+
Lu75lw/a/SyZhEoJpDfJIGpt8edBmVEb6qJiwdvwZPcIkak6yfj9tMqaIU6vpNqb
41+
qgSzPQqsaojOpeH9A6RJARixdcXM3b4essnV4PXmMQ7IVZCmeOT22qQ+7Gk/oX2M
42+
3eQ64x0mvSH1UNeo9BkzMD1vPEDa5pcUUBhzs8gT+IOpAq8EwKEAhna9JRnUDR9a
43+
Ft4dyIREAO4evUtJ7ZtkZGEc2LpMkoK/lH9ljhUOjlAlSSC22Hpk5ol5Sg2pwCJJ
44+
931K1Ueptb+Cuhi/1NPk2XZKkVkQP5+Xglg5vI8e5jarXb0t0kKs7tjOlFc+0iRx
45+
ToaSdHwSuPnskbVIOKgyvRml0uHnPmPpa+8ND6TxgBBa+Mb8tQnFNnkRKFz/19Ak
46+
j9UAsVdJw+zU0KTTx4SiDRH39ydv2oeFLD20Oh80fqXyPcHc6jHsPEukn3A012Lm
47+
p3BWab4WTaDBNCioWGtXKRHED3ZTorvSg1arbwHp1P3z/+8G3mJI9q0CvheMeG4k
48+
j71YGeokktz626PT7LWBfViK60ZadmnHg6Cf/I19pd+Ai3FdsRadxLz/5jBiV2VE
49+
0j9WqtSXQSs7e9Xd85gEaEbLeKO1W7Ypa7Pmg86gJfaXHuWz4Cp3vDZdVhV161nS
50+
4AHkgmb1HMc7vAHPR0V+knYM9eGTfOCT4J3hRnLgauIfcvnI4GTlGpZO9NKaU22k
51+
ZO/Gj//eS0JbkffL2GGFu8tA/eCakyrgq+S1MJe3HwUHzRL9AEonlt0O4ofNwT7h
52+
SM0A
53+
=nu7e
54+
-----END PGP MESSAGE-----
55+
fp: 954A3772D62EF90E4B31FBC6C91A9911192C187A
56+
- created_at: '2020-05-27T02:00:39Z'
57+
enc: |
58+
-----BEGIN PGP MESSAGE-----
59+
60+
hQEMA4SNlT+wHnqoAQf/fB2EW5yaGESpPSLUcOXdEfQON/wqfR3EZroX34xNz3+4
61+
RLFOwo7PagIOMbugSfVbxt14RYbxWT9+43oGSgg1F4b5IuxIT1wUwLSrCnR/QE8z
62+
VEZkf2/yuZ8k0+HB3wG7fgP10EYo236aoiaWC28kWivqO76W9+ZQCgVcL4Wj+XTe
63+
ueIPDAyZrnXbd3GTAUl0/VBMoZKJMr8AIK/5ZCnwoILxGe6BQpX4qDxBFRg65Yf6
64+
8nMoai6FxbGnuBdIL3fuQ1UAggYCou9iQZpp632f0yHZ+B4b1plEt/iVCgb8WH4v
65+
paCGx836Um2uFXm0rCZB5whAasxNkY9Ik/nZxuPnodJeAVWjlcPPAY9cqo3fTnYK
66+
tnSxZ970TwiNWCeocWL/VGNXAnaIkofldGMzFsIumLVuyhUe3NhfTRYbflDTxG2o
67+
nLb/1mGv416ULuKEgX9j+fezJgOyMgOaeQfkS8dm0w==
68+
=al2j
69+
-----END PGP MESSAGE-----
70+
fp: 8333F292B1BBD334A61E6F566785F7AF28DE7081
71+
- created_at: '2020-05-27T02:00:39Z'
72+
enc: |-
73+
-----BEGIN PGP MESSAGE-----
74+
75+
wcFMA82rPM2mSf/aARAAon72nRRf9II/gY+zdEH4IyqIHOiCG4H8jLt2dm2CkfOV
76+
q/kiZoL5KUL+L+bGbOOiqenBZI5w4U6Vva4ap8/UKbaLqK3yDVBd/WafJf58BUlq
77+
u76cNhxn9rcTcHzJ22/bKEbGO0KbVdx7ibQ85OBvzF1cdrqr1cxr+nblff81gQ41
78+
H6OvNUCneQYI4Bq9OYfOnesLC6cYunk+eFHiNGmcAbT7gpF+RD3DsyBLGPFCFm+a
79+
CMOkCaXRNKrQdf7lCJi1jiuTOoJwER5CdYnEPNoojQCVGDqtKPHgggC81fc8rqme
80+
Y09Zh9X6wWiJdbOVXZDCATzF5it+tqNz8ZSq9kNdpaOXXMOoYXBpP0Jamt4rMQbn
81+
MqDsy4HEpL6u7D+IEe3+lArXLRAeJ6KhMnQM9MjWjQwZ2l6Gcy914j3y1ItGguBc
82+
Ohd2y0PynT3F2jzxhQhlQ4D5wYQM31jpiE6x0acsTbDFYHAYn7dRprH9BYY3Dgh1
83+
V9EQIYdWowl9pUBEQzsJ+dAOVjTtUv+O/UQJCuow0/66n44dZ4UEycU0+lLqrRiE
84+
CLnxDMtXdimm5/SEOHHLjaR8q4rve9WfGujV1iQZPEuK73kVaa3TbsQtc19FwhGq
85+
YxLJuRqyZ2eM82Fq92ibCjT6xpUSz3fFyZJSSI2nTIGtKLXOYoArSrOAOTzdun/S
86+
4AHkwZABmgQMa+15cThhPISJ9+HuNuBK4OrhQvDgz+JihNuC4MHlhlKev/A2BFYi
87+
YwFEvbPkyGNjZNCiV+tWGtf4KL4skSTg8eTgOFfu1Jr2Q3lYtRa/Zl/a4mFUGMTh
88+
5G0A
89+
=oGHl
90+
-----END PGP MESSAGE-----
91+
fp: 6B61ECD76088748C70590D55E90A401336C8AAA9
92+
- created_at: '2020-05-27T02:00:39Z'
93+
enc: |
94+
-----BEGIN PGP MESSAGE-----
95+
96+
hQIMA6dhVUuTLV7oAQ/6AoEKc0aiAC16FTJEQVpsi5Y6ffxey6zKRJeyx/6480DF
97+
Bkg2tfoT8bEDTNYi6EqPPM4Vef3tgoR+3KMlML6Mt1y77N5Knni93RSaCyeSKaa6
98+
1AZaLtLc6a6UF/qLJJ5ISniRdiSmJAQFttARu6h35IJrZlfNEi8rvnlP7AZObc2d
99+
qjKcSqNI0S3jvHam61xys93mmvQbTpGP+PE++1qlt53231KH/RrgNhPMFQij6d52
100+
Pfxicu9D+x7fcIkDVHIbh3ycQOTzKzi1zJQpzo0vIRK7zVMOGNBL4V3jlxN+JTFa
101+
xDSTW+E46BnmG1kwVGsawkakDt4W1MOGzT3Nd1b4X6QuEEOvqVGAOaYoYatAk2D5
102+
qy3ov3jq36z5Nc1+Zm6hMq+KnSSSOez5YDxx89b3eMuAb10Z1IcJ3Owr/zeXDdzJ
103+
tX3gRWL/Mq9StJMhaXd1gH5Ba7ZH/P+USk68uny1erIUG3oFxa0quwW5VycYWDQf
104+
aVJuhwX9XxPvAnUz/BGGt+r6rpFNPtmb0hDYk+TIYElXRHi9jQxYiOeBXhq87iBF
105+
U1Jv/tsXZMKnAK0l/xZrwihAa3ZZ5jp0djZ5Btff/0afbz44vAjhmagWRaNNdHdr
106+
elITYEoqnG/XIEtSXu3VBM9ArAU2h+H2IpslohkaDE7WqCsLvNtIRyiG5a6wJjvS
107+
XgFCmA5J+bqcFs+EEncWcvRepym+pgVzp2z1e2ZPrSYXeJYw/L+KkSSCb+48F5eE
108+
bJHG57xw6Krtfb1T6kFErfmiCDjgaJJ0mJUJozfFYsxL+/AlTjKf+oA+qkHh7qw=
109+
=SkM7
110+
-----END PGP MESSAGE-----
111+
fp: FC2255B7BBC7EABD4EFAFA1068907D8BCCD85A5A
112+
- created_at: '2020-05-27T02:00:39Z'
113+
enc: |
114+
-----BEGIN PGP MESSAGE-----
115+
116+
hQIMA8KRInHl7Vz+AQ/+NzGqUvMLyF9GPB5zfJDLRcNe0DPdj3rEoszXcl0LBxBY
117+
27wekbYkiF/pS8+EqIzgfaVRNAx5IOQvotSomATXgZ10FiLSYksmka1wI6xKUqRf
118+
Gygnevg5MykUa03RhTVlEmKew4GdObN8bmMmGiqSYgnMeLCYlfuUnCixg/g5jmer
119+
kZ+QWrvfoHnqiV5WI7cySXh3+Q8Ndyj3YjhIvw6H3Pc+RaCQ8WQ/H7AQjGpJPNrZ
120+
iLriNeKlNNJYfPM7FZCi/PAhmmVS8m+AyFuHTe9rP8RMLCMCxqKzRZGteUi+XIjV
121+
Z3gSsHXe5WWoyAgi0ox8B1bs6qP5jHZoN8/hrdtZqXBt90FTp5UyxM/cwd7oUYok
122+
Y8Ep/innfyrxjxE/ND07v29LhFnFpZJMm0Orgze4gAiTy6S/Urnt6TW3OJvJPWjK
123+
sjyaGECL3efgcGXeSfJxmsErtR2QtHB1oeIYlMetyGfS5Oego0Vo9KZ8uPu/TB5W
124+
XqtbWJpxXpxrCj8kIDec1P3AhBYAohZfmPw10nqWOLcQwJEZWrj80Lr8HNH8AjBj
125+
1dMGC0nPUlT4hsiXav3ZA4ecy8kY3B6VFcXufWm9MreOS+QFW+g4s3Gvr0aQEzbg
126+
//Q7DKvfPmDtWQf62tqX6yYA2KS7GkX8jH7tHKUsPYSOIt7/7z0JXvRB1BU2uHDS
127+
XgHL9LbfoxLCWIqyQsRpX3UVpMCg44RqIOmJDRwnV22g97YATblk8AwgqaIiJk9O
128+
lJcRfr25f5Q9cXxU4LPbR6h7LRJsrNKquxtefdkz0SoRUQjE40xR00NJ7htQB5E=
129+
=n94p
130+
-----END PGP MESSAGE-----
131+
fp: C92FE5A3FBD58DD3EC5AA26BB10116B8193F2DBD
132+
encrypted_regex: ^(data|stringData)$
133+
version: 3.5.0

mail/certificate.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: cert-manager.io/v1alpha2
2+
kind: Certificate
3+
metadata:
4+
namespace: mail
5+
name: mail.hashbang.sh
6+
spec:
7+
secretName: mail-certs
8+
dnsNames:
9+
- mail.hashbang.sh
10+
issuerRef:
11+
name: letsencrypt-prod
12+
kind: ClusterIssuer

mail/files/main.cf

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
2+
biff = no
3+
4+
# appending .domain is the MUA's job.
5+
append_dot_mydomain = no
6+
7+
# Uncomment the next line to generate "delayed mail" warnings
8+
#delay_warning_time = 4h
9+
10+
readme_directory = no
11+
12+
# TLS parameters
13+
smtpd_tls_cert_file = /etc/postfix/certs/server.crt
14+
smtpd_tls_key_file = /etc/postfix/certs/server.key
15+
smtpd_use_tls=yes
16+
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
17+
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
18+
# smtpd_tls_CAfile = /etc/postfix/certs/cacert.pem
19+
smtpd_tls_security_level = may
20+
smtpd_tls_auth_only = no
21+
smtpd_tls_loglevel = 1
22+
smtpd_tls_received_header = yes
23+
smtpd_tls_session_cache_timeout = 3600s
24+
smtp_tls_security_level = dane
25+
smtp_tls_note_starttls_offer = yes
26+
smtp_dns_support_level = dnssec
27+
28+
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
29+
# information on enabling SSL in the smtp client.
30+
31+
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
32+
33+
myhostname = mail.hashbang.sh
34+
relay_domains = hashbang.sh
35+
mydestination = mail.hashbang.sh, hashbang.sh, localhost.hashbang.sh, localhost
36+
mynetworks = 127.0.0.0/8 46.4.114.111
37+
relayhost =
38+
alias_maps = hash:/etc/aliases
39+
alias_database = hash:/etc/aliases
40+
myorigin = $mydomain
41+
mailbox_size_limit = 0
42+
recipient_delimiter = +
43+
inet_interfaces = all
44+
45+
virtual_alias_maps = pgsql:/etc/postfix/userdb-aliases.cf
46+
47+
message_size_limit = 52428800
48+
49+
compatibility_level = 2

mail/files/userdb-aliases.cf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
domain = hashbang.sh
2+
hosts = postgresql://mail:userdb-mail-lookup@userdb-attempt-too-do-user-989073-0.db.ondigitalocean.com:25060/userdb?sslmode=require
3+
dbname = userdb
4+
query = select name || '@' || host from passwd where name = '%u'

mail/kustomization.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: kustomize.config.k8s.io/v1beta1
2+
kind: Kustomization
3+
namespace: mail
4+
resources:
5+
- namespace.yaml
6+
- resources.yaml
7+
- certificate.yaml
8+
configMapGenerator:
9+
- name: mail-config
10+
options:
11+
disableNameSuffixHash: true
12+
files:
13+
- files/main.cf
14+
- files/userdb-aliases.cf
15+
generators:
16+
- secret-generator.yaml
17+
images:
18+
- name: hashbang/postfix
19+
digest: sha256:1c9491593e383b95cde6c75a82abcfe2e12e4a26b1656abeaac0bf1f8209b9ee
20+
- name: alpine
21+
newTag: alpine:3.12.0
22+
digest: sha256:a15790640a6690aa1730c38cf0a440e2aa44aaca9b0e8931a9f2b0d7cc90fd65

mail/namespace.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: mail

0 commit comments

Comments
 (0)