Example #1
0
import ipaddress

args = os.environ.copy()

log.basicConfig(stream=sys.stderr, level=args.get("LOG_LEVEL", "WARNING"))

# Get the first DNS server
with open("/etc/resolv.conf") as handle:
    content = handle.read().split()
    resolver_ip = content[content.index("nameserver") + 1]
    if type(ipaddress.ip_address(resolver_ip)) is ipaddress.IPv6Address:
        args["RESOLVER"] = "[{}]".format(resolver_ip)
    else:
        args["RESOLVER"] = resolver_ip

args["ADMIN_ADDRESS"] = system.get_host_address_from_environment(
    "ADMIN", "admin")
args["ANTISPAM_WEBUI_ADDRESS"] = system.get_host_address_from_environment(
    "ANTISPAM_WEBUI", "antispam:11334")
if args["WEBMAIL"] != "none":
    args["WEBMAIL_ADDRESS"] = system.get_host_address_from_environment(
        "WEBMAIL", "webmail")
if args["WEBDAV"] != "none":
    args["WEBDAV_ADDRESS"] = system.get_host_address_from_environment(
        "WEBDAV", "webdav:5232")

# TLS configuration
cert_name = os.getenv("TLS_CERT_FILENAME", default="cert.pem")
keypair_name = os.getenv("TLS_KEYPAIR_FILENAME", default="key.pem")
args["TLS"] = {
    "cert": ("/certs/%s" % cert_name, "/certs/%s" % keypair_name),
    "letsencrypt": ("/certs/letsencrypt/live/mailu/fullchain.pem",
Example #2
0
                ("senderlogin", "url", url + "sender/login/§")])


def is_valid_postconf_line(line):
    return not line.startswith("#") \
            and not line == ''


def get_outclean_host():
    hostnames = os.environ["HOSTNAMES"]
    if hostnames:
        return hostnames.split(",")[0]


# Actual startup script
os.environ["FRONT_ADDRESS"] = system.get_host_address_from_environment(
    "FRONT", "front")
os.environ["ADMIN_ADDRESS"] = system.get_host_address_from_environment(
    "ADMIN", "admin")
os.environ[
    "ANTISPAM_MILTER_ADDRESS"] = system.get_host_address_from_environment(
        "ANTISPAM_MILTER", "antispam:11332")
os.environ["LMTP_ADDRESS"] = system.get_host_address_from_environment(
    "LMTP", "imap:2525")

# Advanced setting to set mail server as originating message IP
os.environ["HOST_OUTCLEAN"] = get_outclean_host()
os.environ["OUTCLEAN_ADDRESS"] = system.get_host_address_from_environment(
    "OUTCLEAN", "")

for postfix_file in glob.glob("/conf/*.cf"):
    conf.jinja(postfix_file, os.environ,
Example #3
0
                level=os.environ.get("LOG_LEVEL", "WARNING"))


def start_podop():
    os.setuid(8)
    url = "http://" + os.environ["ADMIN_ADDRESS"] + "/internal/dovecot/§"
    run_server(0, "dovecot", "/tmp/podop.socket", [
        ("quota", "url", url),
        ("auth", "url", url),
        ("sieve", "url", url),
    ])


# Actual startup script

os.environ["FRONT_ADDRESS"] = system.get_host_address_from_environment(
    "FRONT", "front")
os.environ["REDIS_ADDRESS"] = system.get_host_address_from_environment(
    "REDIS", "redis")
os.environ["ADMIN_ADDRESS"] = system.get_host_address_from_environment(
    "ADMIN", "admin")
os.environ[
    "ANTISPAM_WEBUI_ADDRESS"] = system.get_host_address_from_environment(
        "ANTISPAM_WEBUI", "antispam:11334")
if os.environ["WEBMAIL"] != "none":
    os.environ["WEBMAIL_ADDRESS"] = system.get_host_address_from_environment(
        "WEBMAIL", "webmail")

for dovecot_file in glob.glob("/conf/*.conf"):
    conf.jinja(dovecot_file, os.environ,
               os.path.join("/etc/dovecot", os.path.basename(dovecot_file)))
Example #4
0
#!/usr/bin/python3

import os
import glob
import logging as log
import sys
from socrate import system, conf

log.basicConfig(stream=sys.stderr,
                level=os.environ.get("LOG_LEVEL", "WARNING"))

# Actual startup script

os.environ["FRONT_ADDRESS"] = system.get_host_address_from_environment(
    "FRONT", "front")
os.environ["REDIS_ADDRESS"] = system.get_host_address_from_environment(
    "REDIS", "redis")

if os.environ.get("ANTIVIRUS") == 'clamav':
    os.environ["ANTIVIRUS_ADDRESS"] = system.get_host_address_from_environment(
        "ANTIVIRUS", "antivirus:3310")

for rspamd_file in glob.glob("/conf/*"):
    conf.jinja(
        rspamd_file, os.environ,
        os.path.join("/etc/rspamd/local.d", os.path.basename(rspamd_file)))

# Run rspamd
os.execv("/usr/bin/rspamd", ["rspamd", "-i", "-f"])
Example #5
0
log.basicConfig(stream=sys.stderr,
                level=os.environ.get("LOG_LEVEL", "WARNING"))


def start_podop():
    os.setuid(8)
    url = "http://" + os.environ["ADMIN_ADDRESS"] + "/internal/dovecot/§"
    run_server(0, "dovecot", "/tmp/podop.socket", [
        ("quota", "url", url),
        ("auth", "url", url),
        ("sieve", "url", url),
    ])


# Actual startup script
os.environ["FRONT_ADDRESS"] = system.get_host_address_from_environment(
    "FRONT", "front")
os.environ["ADMIN_ADDRESS"] = system.get_host_address_from_environment(
    "ADMIN", "admin")
os.environ[
    "ANTISPAM_WEBUI_ADDRESS"] = system.get_host_address_from_environment(
        "ANTISPAM_WEBUI", "antispam:11334")

for dovecot_file in glob.glob("/conf/*.conf"):
    conf.jinja(dovecot_file, os.environ,
               os.path.join("/etc/dovecot", os.path.basename(dovecot_file)))

os.makedirs("/conf/bin", exist_ok=True)
for script_file in glob.glob("/conf/*.script"):
    out_file = os.path.join(
        "/conf/bin/",
        os.path.basename(script_file).replace('.script', ''))
Example #6
0
File: start.py Project: rbnis/Mailu
#!/usr/bin/python3

import os
import glob
import logging as log
import sys
from socrate import system, conf

log.basicConfig(stream=sys.stderr,
                level=os.environ.get("LOG_LEVEL", "WARNING"))

# Actual startup script

os.environ["REDIS_ADDRESS"] = system.get_host_address_from_environment(
    "REDIS", "redis")
os.environ["ADMIN_ADDRESS"] = system.get_host_address_from_environment(
    "ADMIN", "admin")

if os.environ.get("ANTIVIRUS") == 'clamav':
    os.environ["ANTIVIRUS_ADDRESS"] = system.get_host_address_from_environment(
        "ANTIVIRUS", "antivirus:3310")

for rspamd_file in glob.glob("/conf/*"):
    conf.jinja(
        rspamd_file, os.environ,
        os.path.join("/etc/rspamd/local.d", os.path.basename(rspamd_file)))

# Run rspamd
os.execv("/usr/sbin/rspamd", ["rspamd", "-i", "-f"])
Example #7
0
#!/usr/bin/python3

import os
import shutil
import logging as log
import sys
from socrate import system, conf

log.basicConfig(stream=sys.stderr,
                level=os.environ.get("LOG_LEVEL", "WARNING"))

# Actual startup script
os.environ["FRONT_ADDRESS"] = system.get_host_address_from_environment(
    "FRONT", "front")
os.environ["IMAP_ADDRESS"] = system.get_host_address_from_environment(
    "IMAP", "imap")

os.environ["MAX_FILESIZE"] = str(
    int(int(os.environ.get("MESSAGE_SIZE_LIMIT")) * 0.66 / 1048576))

base = "/data/_data_/_default_/"
shutil.rmtree(base + "domains/", ignore_errors=True)
os.makedirs(base + "domains", exist_ok=True)
os.makedirs(base + "configs", exist_ok=True)

conf.jinja("/default.ini", os.environ,
           "/data/_data_/_default_/domains/default.ini")
conf.jinja("/application.ini", os.environ,
           "/data/_data_/_default_/configs/application.ini")
conf.jinja("/php.ini", os.environ, "/usr/local/etc/php/conf.d/rainloop.ini")