mailman wip
This commit is contained in:
parent
7350b01403
commit
a461aca4c4
6 changed files with 222 additions and 0 deletions
56
bundles/mailman/files/postfix.cf
Normal file
56
bundles/mailman/files/postfix.cf
Normal file
|
@ -0,0 +1,56 @@
|
|||
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
|
||||
|
||||
|
||||
# Debian specific: Specifying a file name will cause the first
|
||||
# line of that file to be used as the name. The Debian default
|
||||
# is /etc/mailname.
|
||||
#myorigin = /etc/mailname
|
||||
|
||||
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
|
||||
biff = no
|
||||
|
||||
# appending .domain is the MUA's job.
|
||||
append_dot_mydomain = no
|
||||
|
||||
# Uncomment the next line to generate "delayed mail" warnings
|
||||
#delay_warning_time = 4h
|
||||
|
||||
readme_directory = no
|
||||
|
||||
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 3.6 on
|
||||
# fresh installs.
|
||||
compatibility_level = 3.6
|
||||
|
||||
|
||||
|
||||
# TLS parameters
|
||||
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
|
||||
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
|
||||
smtpd_tls_security_level=may
|
||||
|
||||
smtp_tls_CApath=/etc/ssl/certs
|
||||
smtp_tls_security_level=may
|
||||
smtp_tls_session_cache_database = <%text>btree:${data_directory}/smtp_scache</%text>
|
||||
|
||||
|
||||
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
|
||||
myhostname = ${hostname}
|
||||
alias_maps = hash:/etc/aliases
|
||||
alias_database = hash:/etc/aliases
|
||||
mydestination = $myhostname, localhost, localhost.localdomain, ${hostname}
|
||||
relayhost =
|
||||
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||||
mailbox_size_limit = 0
|
||||
recipient_delimiter = +
|
||||
inet_interfaces = all
|
||||
inet_protocols = all
|
||||
|
||||
unknown_local_recipient_reject_code = 550
|
||||
owner_request_special = no
|
||||
|
||||
transport_maps =
|
||||
hash:/opt/mailman/mm/var/data/postfix_lmtp
|
||||
local_recipient_maps =
|
||||
hash:/opt/mailman/mm/var/data/postfix_lmtp
|
||||
relay_domains =
|
||||
hash:/opt/mailman/mm/var/data/postfix_domains
|
34
bundles/mailman/items.py
Normal file
34
bundles/mailman/items.py
Normal file
|
@ -0,0 +1,34 @@
|
|||
files = {
|
||||
'/etc/postfix/main.cf': {
|
||||
'source': 'postfix.cf',
|
||||
'content_type': 'mako',
|
||||
'mode': '0644',
|
||||
'context': {
|
||||
'hostname': node.metadata.get('mailman/hostname'),
|
||||
},
|
||||
'needs': {
|
||||
'pkg_apt:postfix',
|
||||
},
|
||||
'triggers': {
|
||||
'svc_systemd:postfix.service:restart',
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
svc_systemd = {
|
||||
'postfix.service': {
|
||||
'needs': {
|
||||
'pkg_apt:postfix',
|
||||
},
|
||||
},
|
||||
'mailman3.service': {
|
||||
'needs': {
|
||||
'pkg_apt:mailman3-full',
|
||||
},
|
||||
},
|
||||
'mailman3-web.service': {
|
||||
'needs': {
|
||||
'pkg_apt:mailman3-full',
|
||||
},
|
||||
},
|
||||
}
|
29
bundles/mailman/metadata.py
Normal file
29
bundles/mailman/metadata.py
Normal file
|
@ -0,0 +1,29 @@
|
|||
defaults = {
|
||||
'apt': {
|
||||
'packages': {
|
||||
'mailman3-full': {},
|
||||
'postfix': {},
|
||||
'apache2': {
|
||||
'installed': False,
|
||||
'needs': {
|
||||
'pkg_apt:mailman3-full',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@metadata_reactor.provides(
|
||||
'nginx/vhosts',
|
||||
)
|
||||
def nginx(metadata):
|
||||
return {
|
||||
'nginx': {
|
||||
'vhosts': {
|
||||
metadata.get('mailman/hostname'): {
|
||||
'content': 'mailman/vhost.conf',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
31
data/mailman/vhost.conf
Normal file
31
data/mailman/vhost.conf
Normal file
|
@ -0,0 +1,31 @@
|
|||
upstream mailman3 {
|
||||
server unix:/run/mailman3-web/uwsgi.sock fail_timeout=0;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
server_name ${server_name};
|
||||
|
||||
ssl_certificate /var/lib/dehydrated/certs/${server_name}/fullchain.pem;
|
||||
ssl_certificate_key /var/lib/dehydrated/certs/${server_name}/privkey.pem;
|
||||
|
||||
server_tokens off;
|
||||
|
||||
location / {
|
||||
uwsgi_pass mailman3;
|
||||
include /etc/nginx/params/uwsgi;
|
||||
}
|
||||
|
||||
location /mailman3/static {
|
||||
alias /var/lib/mailman3/web/static;
|
||||
}
|
||||
|
||||
location /mailman3/static/favicon.ico {
|
||||
alias /var/lib/mailman3/web/static/postorius/img/favicon.ico;
|
||||
}
|
||||
|
||||
# return 301 https://$server_name$request_uri;
|
||||
access_log /var/log/nginx/mailman3/access.log combined;
|
||||
error_log /var/log/nginx/mailman3/error.log;
|
||||
}
|
|
@ -200,6 +200,11 @@
|
|||
'10.0.228.0/24',
|
||||
],
|
||||
},
|
||||
'mseibert.mailman': {
|
||||
'allowed_ips': [
|
||||
'10.0.229.0/24',
|
||||
],
|
||||
},
|
||||
},
|
||||
'clients': {
|
||||
'macbook': {
|
||||
|
|
67
nodes/mseibert.mailman.py
Normal file
67
nodes/mseibert.mailman.py
Normal file
|
@ -0,0 +1,67 @@
|
|||
# https://teamvault.apps.seibert-media.net/secrets/mkqMRv/
|
||||
# https://console.hetzner.cloud/projects/889138/servers/46578341
|
||||
|
||||
# mailman.ckn.li
|
||||
|
||||
{
|
||||
'hostname': '91.99.123.176',
|
||||
'groups': [
|
||||
#'backup',
|
||||
'debian-12',
|
||||
#'monitored',
|
||||
'webserver',
|
||||
],
|
||||
'bundles': [
|
||||
'mailman',
|
||||
#'wireguard',
|
||||
#'zfs',
|
||||
],
|
||||
'metadata': {
|
||||
'id': '854cb39f-d964-4cc7-9051-ba6574708820',
|
||||
'network': {
|
||||
'internal': {
|
||||
'interface': 'ens10',
|
||||
'ipv4': '10.0.229.2/24',
|
||||
},
|
||||
'external': {
|
||||
'interface': 'eth0',
|
||||
'ipv4': '91.99.123.176/32',
|
||||
'gateway4': '172.31.1.1',
|
||||
'ipv6': '2a01:4f8:c013:2030::2/64',
|
||||
'gateway6': 'fe80::1',
|
||||
},
|
||||
},
|
||||
'mailman': {
|
||||
'hostname': 'mailman.ckn.li',
|
||||
},
|
||||
'overwrite_nameservers': [
|
||||
'8.8.8.8',
|
||||
],
|
||||
'vm': {
|
||||
'cores': 2,
|
||||
'ram': 4096,
|
||||
},
|
||||
'wireguard': {
|
||||
'my_ip': '172.30.0.240/32',
|
||||
's2s': {
|
||||
'htz.mails': {
|
||||
'allowed_ips': [
|
||||
'10.0.0.0/24',
|
||||
'10.0.2.0/24',
|
||||
'10.0.9.0/24',
|
||||
'10.0.10.0/24',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
'zfs': {
|
||||
'pools': {
|
||||
'tank': {
|
||||
'devices': [
|
||||
'/var/lib/zfs_file',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
Loading…
Reference in a new issue