butter-portal/install_madmail.py

77 lines
2.6 KiB
Python
Raw Normal View History

2026-03-30 15:15:22 +01:00
import pexpect
import json
from app import app
from subprocess import run
2026-03-30 15:15:22 +01:00
def run_madmail_installer():
with open("./settings.txt", "r") as f:
settings = json.load(f)
butterbox_hostname = settings["butterbox_hostname"]
cmd = f"sudo ../madmail/madmail install"
child = pexpect.spawn(cmd, encoding = "utf-8")#
child.logfile = open("install_log.txt", "w")
child.expect("Customize every setting")
child.sendline("2")
child.expect("Primary domain")
child.sendline(f"{butterbox_hostname}.local")
2026-03-30 15:15:22 +01:00
child.expect("MX record")
child.sendline(f"{butterbox_hostname}.local")
2026-03-30 15:15:22 +01:00
child.expect("Public IP address")
child.sendline(app.config['BUTTERBOX_DEFAULT_IP'])
2026-03-30 15:15:22 +01:00
child.expect("Additional domains")
child.sendline("")
child.expect("State directory")
child.sendline("")
child.expect("Configuration directory")
child.sendline("")
child.expect("TLS mode")
2026-03-31 14:23:02 +01:00
child.sendline("self_signed")
child.expect("Disable TLS verification for clients")
2026-04-01 09:46:18 +01:00
child.sendline("n")
2026-03-30 15:15:22 +01:00
child.expect("SMTP port")
2026-03-31 14:23:02 +01:00
child.sendline("25")
2026-03-30 15:15:22 +01:00
child.expect("Submission port")
2026-03-31 14:23:02 +01:00
child.sendline("587")
2026-03-30 15:15:22 +01:00
child.expect("Submission TLS port")
2026-03-31 14:23:02 +01:00
child.sendline("465")
2026-03-30 15:15:22 +01:00
child.expect("IMAP port")
2026-03-31 14:23:02 +01:00
child.sendline("143")
2026-03-30 15:15:22 +01:00
child.expect("IMAP TLS port")
2026-03-31 14:23:02 +01:00
child.sendline("993")
2026-03-30 15:15:22 +01:00
child.expect("Allow insecure")
2026-04-01 09:46:18 +01:00
child.sendline("n")
2026-03-30 15:15:22 +01:00
child.expect("Enable chatmail endpoint for user registration")
child.sendline("y")
child.expect("Chatmail HTTP port")
child.sendline("8081")
child.expect("Chatmail HTTPS port")
child.sendline("8443")
child.expect("Chatmail username length")
2026-03-31 14:23:02 +01:00
child.sendline("8")
2026-03-30 15:15:22 +01:00
child.expect("Chatmail password length")
2026-03-31 14:23:02 +01:00
child.sendline("16")
2026-03-30 15:15:22 +01:00
child.expect("Enable Shadowsocks proxy for faster messaging")
child.sendline("n")
child.expect("Enable TURN server")
child.sendline("n")
child.expect("Require PGP encryption for outgoing messages")
child.sendline("y")
child.expect("Allow secure join requests without encryption")
child.sendline("y")
2026-03-30 15:15:22 +01:00
child.expect("Passthrough senders")
child.sendline("")
child.expect("Passthrough recipients")
child.sendline("")
child.expect("Maximum message size")
child.sendline("")
child.expect("Add Cloudflare proxy disable tags to DNS records")
child.sendline("n")
child.expect("Enable logging for the server")
child.sendline("y")
child.expect(pexpect.EOF)
daemon_reload = run(["sudo", "systemctl", "daemon-reload"], capture_output=True, text=True)
if daemon_reload.returncode != 0:
print(f"Issue running systemctl daemon_reload")