butter-portal/install_madmail.py

71 lines
2.4 KiB
Python

import pexpect
import json
from app import app
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")
child.expect("MX record")
child.sendline(f"{butterbox_hostname}.local")
child.expect("Public IP address")
child.sendline(app.config['BUTTERBOX_DEFAULT_IP'])
child.expect("Additional domains")
child.sendline("")
child.expect("State directory")
child.sendline("")
child.expect("Configuration directory")
child.sendline("")
child.expect("TLS mode")
child.sendline("self_signed")
child.expect("Disable TLS verification for clients")
child.sendline("y")
child.expect("SMTP port")
child.sendline("25")
child.expect("Submission port")
child.sendline("587")
child.expect("Submission TLS port")
child.sendline("465")
child.expect("IMAP port")
child.sendline("143")
child.expect("IMAP TLS port")
child.sendline("993")
child.expect("Allow insecure")
child.sendline("y")
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")
child.sendline("8")
child.expect("Chatmail password length")
child.sendline("16")
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")
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)