From 1d8137d5f3c88da8d37ba3dbe19d56a16e8c00c5 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 08:39:35 -0600 Subject: [PATCH 01/20] Update Dockerfile Updated to work with RHEL --- Dockerfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5395bf5..bbc5a3c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -From ubuntu:trusty +FROM ubuntu:trusty MAINTAINER Elliott Ye # Set noninteractive mode for apt-get @@ -7,9 +7,12 @@ ENV DEBIAN_FRONTEND noninteractive # Update RUN apt-get update -# Start editing -# Install package here for cache -RUN apt-get -y install supervisor postfix sasl2-bin opendkim opendkim-tools +# Check OS type +RUN if grep "ubuntu" /etc/os-release > /dev/null ; \ + then apt-get -y install supervisor postfix sasl2-bin opendkim opendkim-tools; \ + elif grep "redhat" /etc/os-release > /dev/null ; \ + then yum -y install supervisor postfix cyrus-sasl cyrus-sasl-plain opendkim opendkim-tools; \ + fi # Add files ADD assets/install.sh /opt/install.sh From e29c366188f64d57c3332804dec666cdc5839d4e Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 08:41:30 -0600 Subject: [PATCH 02/20] Update install.sh Added RHEL support --- assets/install.sh | 69 ++++++++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/assets/install.sh b/assets/install.sh index 0b2aaff..becfb8f 100755 --- a/assets/install.sh +++ b/assets/install.sh @@ -1,12 +1,28 @@ #!/bin/bash +# Check OS type +if grep "ubuntu" /etc/os-release > /dev/null ; then + # Ubuntu + supervisor_config_file="/etc/supervisor/conf.d/supervisord.conf" + postconf_cmd="postconf" + yum_cmd="" +elif grep "redhat" /etc/os-release > /dev/null ; then + # RHEL/CentOS + supervisor_config_file="/etc/supervisord.conf" + postconf_cmd="postconf -c /etc/postfix" + yum_cmd="yum -y" +else + echo "Unsupported OS. Exiting." + exit 1 +fi + #judgement -if [[ -a /etc/supervisor/conf.d/supervisord.conf ]]; then +if [[ -a $supervisor_config_file ]]; then exit 0 fi #supervisor -cat > /etc/supervisor/conf.d/supervisord.conf < $supervisor_config_file <> /etc/postfix/sasl/smtpd.conf <> /etc/supervisor/conf.d/supervisord.conf <> $supervisor_config_file <> /etc/opendkim.conf <> /etc/opendkim/KeyTable <> /etc/opendkim/SigningTable < Date: Tue, 26 Sep 2023 08:50:35 -0600 Subject: [PATCH 03/20] Update Dockerfile added an update and epel-release install --- Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bbc5a3c..62b7930 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ FROM ubuntu:trusty + MAINTAINER Elliott Ye # Set noninteractive mode for apt-get @@ -11,7 +12,9 @@ RUN apt-get update RUN if grep "ubuntu" /etc/os-release > /dev/null ; \ then apt-get -y install supervisor postfix sasl2-bin opendkim opendkim-tools; \ elif grep "redhat" /etc/os-release > /dev/null ; \ - then yum -y install supervisor postfix cyrus-sasl cyrus-sasl-plain opendkim opendkim-tools; \ + then yum -y update && \ + yum -y install epel-release && \ + yum -y install supervisor postfix cyrus-sasl cyrus-sasl-plain opendkim opendkim-tools ; \ fi # Add files From 600c4e6763d61faddad134fd05be92ba5d35ed27 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 08:55:27 -0600 Subject: [PATCH 04/20] Update install.sh support added for RockyOS and Solaris --- assets/install.sh | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/assets/install.sh b/assets/install.sh index becfb8f..223d3dc 100755 --- a/assets/install.sh +++ b/assets/install.sh @@ -11,6 +11,16 @@ elif grep "redhat" /etc/os-release > /dev/null ; then supervisor_config_file="/etc/supervisord.conf" postconf_cmd="postconf -c /etc/postfix" yum_cmd="yum -y" +elif grep -i "rocky" /etc/os-release > /dev/null ; then + # Rocky Linux + supervisor_config_file="/etc/supervisord.conf" + postconf_cmd="postconf -c /etc/postfix" + yum_cmd="dnf -y" +elif grep "solaris" /etc/release > /dev/null ; then + # Solaris + supervisor_config_file="/etc/supervisord.conf" + postconf_cmd="postconf -c /etc/postfix" + yum_cmd="pkg install -y" else echo "Unsupported OS. Exiting." exit 1 @@ -33,9 +43,7 @@ command=/opt/postfix.sh command=/usr/sbin/rsyslogd -n -c3 EOF -############ -# postfix -############ +###### postfix ###### cat >> /opt/postfix.sh <> $supervisor_config_file <> /etc/default/opendkim <> /etc/opendkim/KeyTable <> /etc/opendkim/SigningTable < Date: Tue, 26 Sep 2023 08:56:17 -0600 Subject: [PATCH 05/20] Update Dockerfile added solaris and rocky support --- Dockerfile | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 62b7930..8139ec5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,13 +8,20 @@ ENV DEBIAN_FRONTEND noninteractive # Update RUN apt-get update -# Check OS type -RUN if grep "ubuntu" /etc/os-release > /dev/null ; \ - then apt-get -y install supervisor postfix sasl2-bin opendkim opendkim-tools; \ - elif grep "redhat" /etc/os-release > /dev/null ; \ - then yum -y update && \ +# Check OS type and install packages accordingly +RUN if grep "ubuntu" /etc/os-release > /dev/null ; then \ + apt-get -y install supervisor postfix sasl2-bin opendkim opendkim-tools; \ + elif grep "redhat" /etc/os-release > /dev/null ; then \ + yum -y update && \ yum -y install epel-release && \ yum -y install supervisor postfix cyrus-sasl cyrus-sasl-plain opendkim opendkim-tools ; \ + elif grep -i "rocky" /etc/os-release > /dev/null ; then \ + yum -y update && \ + yum -y install epel-release && \ + yum -y install supervisor postfix cyrus-sasl cyrus-sasl-plain opendkim opendkim-tools ; \ + elif grep "solaris" /etc/release > /dev/null ; then \ + pkg update -y && \ + pkg install -y supervisor postfix sasl opendkim ; \ fi # Add files From b31a568314a82c0d001bde6e209b3d607f3349f7 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 09:00:49 -0600 Subject: [PATCH 06/20] Update Dockerfile Adding lines to run a firewall update/check script. --- Dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8139ec5..d3ac7dd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,10 @@ RUN if grep "ubuntu" /etc/os-release > /dev/null ; then \ # Add files ADD assets/install.sh /opt/install.sh +ADD assets/update-firewall.sh /opt/update-firewall.sh + +# Set executable permissions +RUN chmod +x /opt/update-firewall.sh # Run -CMD /opt/install.sh;/usr/bin/supervisord -c /etc/supervisor/supervisord.conf +CMD /opt/install.sh;/usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /opt/update-firewall.sh From e033bc640e5d8a0bd1379d9bb0024f4d5febb16c Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 09:21:48 -0600 Subject: [PATCH 07/20] Create update-firewall.sh checks if firewalld, ufw, or iptables is running. If the service is found and is not running, then it needs to start and enable. If it is already started, then it needs to open the ports. Once a running service is found, the other blocks are ignored. --- assets/update-firewall.sh | 48 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 assets/update-firewall.sh diff --git a/assets/update-firewall.sh b/assets/update-firewall.sh new file mode 100644 index 0000000..9183d1a --- /dev/null +++ b/assets/update-firewall.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Check if firewalld is running +if systemctl is-active --quiet firewalld.service; then + # Open ports for mail traffic + firewall-cmd --add-port=25/tcp --permanent + firewall-cmd --add-port=587/tcp --permanent + firewall-cmd --add-port=465/tcp --permanent + + # Reload FirewallD service + systemctl reload firewalld + +# Check if UFW is running +elif ufw status | grep -q 'Status: active'; then + # Open ports for mail traffic + ufw allow 25/tcp + ufw allow 587/tcp + ufw allow 465/tcp + + # Reload UFW service + systemctl reload ufw + +# Check if IPTABLES service is running +elif systemctl is-active --quiet iptables.service; then + # Open ports for mail traffic + iptables -A INPUT -p tcp --dport 25 -j ACCEPT + iptables -A INPUT -p tcp --dport 587 -j ACCEPT + iptables -A INPUT -p tcp --dport 465 -j ACCEPT + + # Save IPTABLES rules + service iptables save + +# If no running firewall service is found, start and enable firewalld +else + # Start and enable Firewalld + systemctl start firewalld + systemctl enable firewalld + + # Open ports for mail traffic + firewall-cmd --add-port=25/tcp --permanent + firewall-cmd --add-port=587/tcp --permanent + firewall-cmd --add-port=465/tcp --permanent + + # Reload FirewallD service + systemctl reload firewalld +fi + +exit 0 From 558bcb55a6fabbb2a1bdcf782a4589622732b48e Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:29:32 -0600 Subject: [PATCH 08/20] Update and rename build.sh to build.py --- build.py | 8 ++++++++ build.sh | 3 --- 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100755 build.py delete mode 100755 build.sh diff --git a/build.py b/build.py new file mode 100755 index 0000000..6ec3e95 --- /dev/null +++ b/build.py @@ -0,0 +1,8 @@ +#!/usr/bin/python3 +import os +from creds import * + +os.system("sudo docker pull catatnight/postfix") +os.system("sudo docker run -p 25:25 -e maildomain=floreana.colorado.edu -e smtp_user=:pwd --name postfix -d catatnight/postfix") +os.system("sudo docker run -p 25:25 -e maildomain=mail.example.com -e smtp_user=user:pwd -v /path/to/domainkeys:/etc/opendkim/domainkeys --name postfix -d catatnight/postfix") +os.system("sudo docker run -p 587:587 -e maildomain=mail.example.com -e smtp_user=anno5566@colorado.edu:pwd -v /etc/:/etc/postfix/certs --name postfix -d catatnight/postfix") diff --git a/build.sh b/build.sh deleted file mode 100755 index d7b5420..0000000 --- a/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -docker build -t catatnight/postfix . \ No newline at end of file From 3ce24f3291f3d1fd31e531fb16e5f0ba0893ff6b Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:31:10 -0600 Subject: [PATCH 09/20] Update Dockerfile --- Dockerfile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index d3ac7dd..9d374fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,13 @@ -FROM ubuntu:trusty +FROM ubuntu:latest -MAINTAINER Elliott Ye +MAINTAINER Alex Noel # Set noninteractive mode for apt-get ENV DEBIAN_FRONTEND noninteractive # Update RUN apt-get update +RUN apt-get install -y python3 # Check OS type and install packages accordingly RUN if grep "ubuntu" /etc/os-release > /dev/null ; then \ @@ -27,9 +28,12 @@ RUN if grep "ubuntu" /etc/os-release > /dev/null ; then \ # Add files ADD assets/install.sh /opt/install.sh ADD assets/update-firewall.sh /opt/update-firewall.sh +ADD assets/script.py /opt/script.py # Set executable permissions RUN chmod +x /opt/update-firewall.sh +RUN chmod +x /opt/build.py # Run -CMD /opt/install.sh;/usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /opt/update-firewall.sh +CMD /opt/install.sh;/usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /opt/update-firewall.sh;/usr/bin/python3 /opt/script.py + From 3f1e7a33f1681728fe9eda9cd124949409b3d227 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:31:51 -0600 Subject: [PATCH 10/20] Create creds.py --- creds.py | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 creds.py diff --git a/creds.py b/creds.py new file mode 100644 index 0000000..0c207be --- /dev/null +++ b/creds.py @@ -0,0 +1,2 @@ +user = "" +password = "" From 20bc08deebb0040b639a067b31190e1ca2e111de Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:33:08 -0600 Subject: [PATCH 11/20] Update build.py --- build.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.py b/build.py index 6ec3e95..b0be68f 100755 --- a/build.py +++ b/build.py @@ -2,7 +2,7 @@ import os from creds import * -os.system("sudo docker pull catatnight/postfix") -os.system("sudo docker run -p 25:25 -e maildomain=floreana.colorado.edu -e smtp_user=:pwd --name postfix -d catatnight/postfix") -os.system("sudo docker run -p 25:25 -e maildomain=mail.example.com -e smtp_user=user:pwd -v /path/to/domainkeys:/etc/opendkim/domainkeys --name postfix -d catatnight/postfix") -os.system("sudo docker run -p 587:587 -e maildomain=mail.example.com -e smtp_user=anno5566@colorado.edu:pwd -v /etc/:/etc/postfix/certs --name postfix -d catatnight/postfix") +os.system(f"sudo docker pull catatnight/postfix") +os.system(f"sudo docker run -p 25:25 -e maildomain=floreana.colorado.edu -e smtp_user={user}:{password} --name postfix -d catatnight/postfix") +os.system(f"sudo docker run -p 25:25 -e maildomain=mail.example.com -e smtp_user={user}:{password} -v /path/to/domainkeys:/etc/opendkim/domainkeys --name postfix -d catatnight/postfix") +os.system(f"sudo docker run -p 587:587 -e maildomain=mail.example.com -e smtp_user={user}:{password} -v /etc/:/etc/postfix/certs --name postfix -d catatnight/postfix") From 086f735239ac09c77a8b4fadafb15d54c311b5d4 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:34:49 -0600 Subject: [PATCH 12/20] Update creds.py --- creds.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/creds.py b/creds.py index 0c207be..faaa10d 100644 --- a/creds.py +++ b/creds.py @@ -1,2 +1,2 @@ -user = "" -password = "" +user = os.environ.get('SMTP_USER') +password = os.environ.get('SMTP_PASSWORD') From 943f2f13b77a243b5e1e22444034c1ef3e4da570 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:36:35 -0600 Subject: [PATCH 13/20] Create export.bash --- export.bash | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 export.bash diff --git a/export.bash b/export.bash new file mode 100644 index 0000000..dbd1d83 --- /dev/null +++ b/export.bash @@ -0,0 +1,3 @@ +#!/bin/bash +export SMTP_USER='username' +export SMTP_PASSWORD='password' From d81e3514f90d4e38b84d156a28207d41a6bcf173 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:37:29 -0600 Subject: [PATCH 14/20] Rename export.bash to assets/export.bash --- export.bash => assets/export.bash | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename export.bash => assets/export.bash (100%) diff --git a/export.bash b/assets/export.bash similarity index 100% rename from export.bash rename to assets/export.bash From a10118a44fe73a00f45d1b623cf9a0796a07cdb5 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:37:45 -0600 Subject: [PATCH 15/20] Rename build.py to assets/build.py --- build.py => assets/build.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename build.py => assets/build.py (100%) diff --git a/build.py b/assets/build.py similarity index 100% rename from build.py rename to assets/build.py From 256fef09161bb071a1dca90d77a6774df81aa574 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:37:58 -0600 Subject: [PATCH 16/20] Rename creds.py to assets/creds.py --- creds.py => assets/creds.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename creds.py => assets/creds.py (100%) diff --git a/creds.py b/assets/creds.py similarity index 100% rename from creds.py rename to assets/creds.py From 636a0600c16f9bfdb2e088e7fbd14454f44e3705 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:39:14 -0600 Subject: [PATCH 17/20] Update and rename export.bash to SMTPINFO.bash --- assets/SMTPINFO.bash | 4 ++++ assets/export.bash | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 assets/SMTPINFO.bash delete mode 100644 assets/export.bash diff --git a/assets/SMTPINFO.bash b/assets/SMTPINFO.bash new file mode 100644 index 0000000..02cdba4 --- /dev/null +++ b/assets/SMTPINFO.bash @@ -0,0 +1,4 @@ +#!/bin/bash +#Put SMTP_USER and Password here. They will be exported as environmental variables, this will keep them protected. +export SMTP_USER='username' +export SMTP_PASSWORD='password' diff --git a/assets/export.bash b/assets/export.bash deleted file mode 100644 index dbd1d83..0000000 --- a/assets/export.bash +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -export SMTP_USER='username' -export SMTP_PASSWORD='password' From 9aeb8be49cc4a39aead8fd78131d9ff101a14826 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:42:53 -0600 Subject: [PATCH 18/20] Update Dockerfile --- Dockerfile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9d374fe..33be600 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,12 +28,16 @@ RUN if grep "ubuntu" /etc/os-release > /dev/null ; then \ # Add files ADD assets/install.sh /opt/install.sh ADD assets/update-firewall.sh /opt/update-firewall.sh -ADD assets/script.py /opt/script.py +ADD assets/export.bash /opt/export.bash +add assets/creds.py /opt/creds.py +ADD assets/build.py /opt/build.py # Set executable permissions RUN chmod +x /opt/update-firewall.sh RUN chmod +x /opt/build.py +RUN chmod +x /opt/export.bash +RUN chmod +x /opt/creds.py # Run -CMD /opt/install.sh;/usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /opt/update-firewall.sh;/usr/bin/python3 /opt/script.py +CMD /opt/install.sh;/usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /opt/update-firewall.sh;/usr/bin/python3; /opt/export.bash; rm /opt/export.bash; /opt/build.py; From f5b4b3b16700a0925bd9d1526ba827ac50a01d61 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:45:08 -0600 Subject: [PATCH 19/20] Update Dockerfile --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 33be600..3ec3945 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,16 +28,16 @@ RUN if grep "ubuntu" /etc/os-release > /dev/null ; then \ # Add files ADD assets/install.sh /opt/install.sh ADD assets/update-firewall.sh /opt/update-firewall.sh -ADD assets/export.bash /opt/export.bash +ADD assets/export.bash /opt/SMTPINFO.bash add assets/creds.py /opt/creds.py ADD assets/build.py /opt/build.py # Set executable permissions RUN chmod +x /opt/update-firewall.sh RUN chmod +x /opt/build.py -RUN chmod +x /opt/export.bash +RUN chmod +x /opt/SMTPINFO.bash RUN chmod +x /opt/creds.py # Run -CMD /opt/install.sh;/usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /opt/update-firewall.sh;/usr/bin/python3; /opt/export.bash; rm /opt/export.bash; /opt/build.py; +CMD /opt/install.sh;/usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /opt/update-firewall.sh; /opt/SMTPINFO.bash; rm /opt/export.bash; /opt/build.py; From 58c11dd7a8ca827fabad217f1d91feafb855e654 Mon Sep 17 00:00:00 2001 From: Alex Noel <116229513+anoel2@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:45:35 -0600 Subject: [PATCH 20/20] Update Dockerfile --- Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 3ec3945..6b23b5f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,5 +39,10 @@ RUN chmod +x /opt/SMTPINFO.bash RUN chmod +x /opt/creds.py # Run -CMD /opt/install.sh;/usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /opt/update-firewall.sh; /opt/SMTPINFO.bash; rm /opt/export.bash; /opt/build.py; +CMD /opt/install.sh && \ + /usr/bin/supervisord -c /etc/supervisor/supervisord.conf && \ + /opt/update-firewall.sh && \ + source /opt/SMTPINFO.bash && \ + python /opt/build.py && \ + rm /opt/export.bash