Add postfix and dovecot dockerfiles, added dovecot deployment (in dev)
This commit is contained in:
parent
1b726dc515
commit
80a4ac2156
18
dockerfiles/dovecot/Dockerfile
Normal file
18
dockerfiles/dovecot/Dockerfile
Normal file
@ -0,0 +1,18 @@
|
||||
FROM alpine:latest
|
||||
|
||||
RUN apk --no-cache add dovecot dovecot-lmtpd dovecot-submissiond bash
|
||||
|
||||
# RUN wget https://github.com/dovecot/docker/blob/main/2.3.21/dovecot.gpg
|
||||
# RUN cp dovecot.gpg /etc/apt/keyrings/dovecot.gpg
|
||||
|
||||
# RUN wget https://github.com/dovecot/docker/blob/main/2.3.21/dovecot.list
|
||||
# RUN cp dovecot.list /etc/apt/sources.list.d
|
||||
|
||||
COPY password_file /etc/dovecot/secrets/dovecot_password.file
|
||||
COPY dovecot.conf /etc/dovecot/dovecot.conf
|
||||
|
||||
EXPOSE 24
|
||||
EXPOSE 143
|
||||
EXPOSE 993
|
||||
|
||||
CMD [ "dovecot", "-F" ]
|
48
dockerfiles/dovecot/dovecot.conf
Normal file
48
dockerfiles/dovecot/dovecot.conf
Normal file
@ -0,0 +1,48 @@
|
||||
## You should mount /etc/dovecot if you want to
|
||||
## manage this file
|
||||
|
||||
mail_home=/srv/mail/%Lu
|
||||
mail_location=sdbox:~/Mail
|
||||
mail_uid=1000
|
||||
mail_gid=10000
|
||||
|
||||
protocols = imap submission lmtp
|
||||
|
||||
first_valid_uid = 1000
|
||||
last_valid_uid = 10000
|
||||
|
||||
# authentication via passwd-file, see https://doc.dovecot.org/configuration_manual/authentication/passwd_file/#authentication-passwd-file
|
||||
passdb {
|
||||
driver = passwd-file
|
||||
args = /etc/dovecot/secrets/dovecot_password_file
|
||||
}
|
||||
|
||||
# post-login user lookup database, see https://doc.dovecot.org/configuration_manual/authentication/user_databases_userdb/#authentication-user-database
|
||||
userdb {
|
||||
driver = passwd-file
|
||||
args = /etc/dovecot/secrets/dovecot_password_file
|
||||
default_fields = home=/home/%u
|
||||
}
|
||||
|
||||
ssl=no
|
||||
# ssl_cert=<cert.pem
|
||||
# ssl_key=<key.pem
|
||||
|
||||
namespace {
|
||||
inbox = yes
|
||||
separator = /
|
||||
}
|
||||
|
||||
service lmtp {
|
||||
inet_listener {
|
||||
port = 24
|
||||
}
|
||||
}
|
||||
|
||||
listen = *
|
||||
|
||||
log_path=/dev/stdout
|
||||
info_log_path=/dev/stdout
|
||||
debug_log_path=/dev/stdout
|
||||
|
||||
!include_try /etc/dovecot/conf.d/*.conf
|
2
dockerfiles/dovecot/password_file
Normal file
2
dockerfiles/dovecot/password_file
Normal file
@ -0,0 +1,2 @@
|
||||
user:{plain}password
|
||||
user2:{plain}password2
|
14
dockerfiles/postfix/Dockerfile
Normal file
14
dockerfiles/postfix/Dockerfile
Normal file
@ -0,0 +1,14 @@
|
||||
FROM alpine:latest
|
||||
|
||||
RUN apk --no-cache add postfix bash openssl
|
||||
|
||||
COPY startup.sh /usr/bin/startup.sh
|
||||
RUN chmod +x /usr/bin/startup.sh
|
||||
COPY main.cf /etc/postfix/main.cf
|
||||
COPY virtual /etc/postfix/virtual
|
||||
|
||||
EXPOSE 25
|
||||
EXPOSE 465
|
||||
EXPOSE 587
|
||||
|
||||
CMD [ "startup.sh" ]
|
14
dockerfiles/postfix/main.cf
Normal file
14
dockerfiles/postfix/main.cf
Normal file
@ -0,0 +1,14 @@
|
||||
# Log everything to standard out
|
||||
maillog_file = /dev/stdout
|
||||
|
||||
# this setting has several side-effects, e.g. the domain of this mail
|
||||
# server is now example.com, http://www.postfix.org/postconf.5.html#mydomain
|
||||
myhostname = mail.virt.local
|
||||
|
||||
# disable all compatibility levels
|
||||
compatibility_level = 9999
|
||||
|
||||
virtual_mailbox_domains = main.virt.local
|
||||
virtual_mailbox_maps = lmdb:/etc/postfix/virtual
|
||||
virtual_alias_maps = lmdb:/etc/postfix/virtual
|
||||
virtual_transport = lmtp:dovecot.default.svc.cluster.local:24
|
8
dockerfiles/postfix/startup.sh
Normal file
8
dockerfiles/postfix/startup.sh
Normal file
@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
postmap /etc/postfix/virtual
|
||||
newaliases
|
||||
|
||||
exec postfix start-fg
|
1
dockerfiles/postfix/virtual
Normal file
1
dockerfiles/postfix/virtual
Normal file
@ -0,0 +1 @@
|
||||
@mail.virt.local
|
@ -1,20 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: dovecat
|
||||
labels:
|
||||
app: dovecat
|
||||
spec:
|
||||
replicas: 1
|
||||
revisionHistoryLimit: 0
|
||||
selector:
|
||||
matchLabels:
|
||||
app: dovecat
|
||||
tier: imap
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
app: dovecat
|
||||
tier: imap
|
||||
|
52
kustomize/dovecot-deployment.yaml
Normal file
52
kustomize/dovecot-deployment.yaml
Normal file
@ -0,0 +1,52 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: dovecot
|
||||
labels:
|
||||
app: dovecot
|
||||
spec:
|
||||
replicas: 1
|
||||
revisionHistoryLimit: 0
|
||||
selector:
|
||||
matchLabels:
|
||||
app: dovecot
|
||||
tier: imap
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
app: dovecat
|
||||
tier: imap
|
||||
spec:
|
||||
containers:
|
||||
- image: git.altarik.fr/quentinlegot/dovecot:latest
|
||||
name: dovecot
|
||||
ports:
|
||||
- containerPort: 24
|
||||
name: lmtp
|
||||
- containerPort: 143
|
||||
name: imap
|
||||
- containerPort: 993
|
||||
name: imaps
|
||||
volumeMounts:
|
||||
- name: dovecot-secrets
|
||||
mountPath: "/etc/dovecot/secrets"
|
||||
readOnly: true
|
||||
- name: dovecot-persistent-storage
|
||||
mountPath: "/home"
|
||||
volumes:
|
||||
- name: dovecot-persistent-storage
|
||||
persistentVolumeClaim:
|
||||
claimName: dovecot-pv-claim
|
||||
- name: dovecot-secrets
|
||||
secret:
|
||||
secretName: dovecot-secrets
|
||||
defaultMode: 292
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
24
kustomize/dovecot-svc.yaml
Normal file
24
kustomize/dovecot-svc.yaml
Normal file
@ -0,0 +1,24 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: dovecot
|
||||
labels:
|
||||
app: dovecot
|
||||
spec:
|
||||
ports:
|
||||
- nodePort: 30024
|
||||
port: 24
|
||||
protocol: TCP
|
||||
targetPort: 24
|
||||
- nodePort: 30143
|
||||
port: 143
|
||||
protocol: TCP
|
||||
targetPort: 143
|
||||
- nodePort: 30993
|
||||
port: 993
|
||||
protocol: TCP
|
||||
targetPort: 993
|
||||
selector:
|
||||
app: dovecot
|
||||
tier: imap
|
||||
type: LoadBalancer
|
12
kustomize/dovecot-volume.yaml
Normal file
12
kustomize/dovecot-volume.yaml
Normal file
@ -0,0 +1,12 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: dovecot-pv-claim
|
||||
labels:
|
||||
app: dovecot
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 100Mi
|
@ -1,8 +1,8 @@
|
||||
namePrefix: mail-
|
||||
resources:
|
||||
- dovecat-deployment.yaml
|
||||
- dovecat-svc.yaml
|
||||
- dovecat-volume.yaml
|
||||
- dovecot-deployment.yaml
|
||||
- dovecot-svc.yaml
|
||||
- dovecot-volume.yaml
|
||||
- postfix-deployment.yaml
|
||||
- postfix-svc.yaml
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user