From f953f95762fa66001975b14f189bab42503e2c32 Mon Sep 17 00:00:00 2001 From: Juan Luis Baptiste Date: Tue, 27 Apr 2021 16:44:39 -0500 Subject: [PATCH] feat: Removed supervisor and rsyslog As mentioned in discussion #54, since version 3.3.0, postfix can run in foreground mode, and since 3.4.0 it can log directly to stdout. --- Dockerfile | 3 +- README.md | 3 - etc/rsyslog.conf | 90 ------------------------ etc/rsyslog.d/listen.conf | 1 - etc/supervisord.conf | 129 ---------------------------------- etc/supervisord.d/postfix.ini | 5 -- etc/supervisord.d/readlog.ini | 4 -- etc/supervisord.d/rsyslog.ini | 2 - run.sh | 3 +- 9 files changed, 3 insertions(+), 237 deletions(-) delete mode 100644 etc/rsyslog.conf delete mode 100644 etc/rsyslog.d/listen.conf delete mode 100644 etc/supervisord.conf delete mode 100644 etc/supervisord.d/postfix.ini delete mode 100644 etc/supervisord.d/readlog.ini delete mode 100644 etc/supervisord.d/rsyslog.ini diff --git a/Dockerfile b/Dockerfile index cc9e1d4..6e8e42c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,12 +4,11 @@ MAINTAINER Juan Luis Baptiste juan.baptiste@gmail.com RUN apk update && \ apk add bash gawk cyrus-sasl cyrus-sasl-login cyrus-sasl-crammd5 mailx \ - perl supervisor postfix rsyslog && \ + postfix && \ rm -rf /var/cache/apk/* && \ mkdir -p /var/log/supervisor/ /var/run/supervisor/ && \ sed -i -e 's/inet_interfaces = localhost/inet_interfaces = all/g' /etc/postfix/main.cf -COPY etc/ /etc/ COPY run.sh / RUN chmod +x /run.sh RUN newaliases diff --git a/README.md b/README.md index 160d493..3ca85ca 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,6 @@ This image is available for the following architectures: * armv7 * arm64 -It also includes rsyslog to enable logging to stdout. - - _If you want to follow the development of this project check out [my blog](https://www.juanbaptiste.tech/category/postfx)._ ### Available image tags diff --git a/etc/rsyslog.conf b/etc/rsyslog.conf deleted file mode 100644 index 8f278f2..0000000 --- a/etc/rsyslog.conf +++ /dev/null @@ -1,90 +0,0 @@ -# rsyslog configuration file - -# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html -# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html - -#### MODULES #### - -# The imjournal module bellow is now used as a message source instead of imuxsock. -$ModLoad imuxsock # provides support for local system logging (e.g. via logger command) -#$ModLoad imklog # reads kernel messages (the same are read from journald) -#$ModLoad immark # provides --MARK-- message capability - -# Provides UDP syslog reception -#$ModLoad imudp -#$UDPServerRun 514 - -# Provides TCP syslog reception -#$ModLoad imtcp -#$InputTCPServerRun 514 - - -#### GLOBAL DIRECTIVES #### - -# Where to place auxiliary files -$WorkDirectory /var/lib/rsyslog - -# Use default timestamp format -$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat - -# File syncing capability is disabled by default. This feature is usually not required, -# not useful and an extreme performance hit -#$ActionFileEnableSync on - -# Include all config files in /etc/rsyslog.d/ -$IncludeConfig /etc/rsyslog.d/*.conf - -# Turn off message reception via local log socket; -# local messages are retrieved through imjournal now. -$OmitLocalLogging off - -# File to store the position in the journal -#$IMJournalStateFile imjournal.state - - -#### RULES #### - -# Log all kernel messages to the console. -# Logging much else clutters up the screen. -#kern.* /dev/console - -# Log anything (except mail) of level info or higher. -# Don't log private authentication messages! -*.info;mail.none;authpriv.none;cron.none /var/log/messages - -# The authpriv file has restricted access. -authpriv.* /var/log/secure - -# Log all the mail messages in one place. -mail.* -/var/log/maillog - - -# Log cron stuff -cron.* /var/log/cron - -# Everybody gets emergency messages -*.emerg :omusrmsg:* - -# Save news errors of level crit and higher in a special file. -uucp,news.crit /var/log/spooler - -# Save boot messages also to boot.log -local7.* /var/log/boot.log - - -# ### begin forwarding rule ### -# The statement between the begin ... end define a SINGLE forwarding -# rule. They belong together, do NOT split them. If you create multiple -# forwarding rules, duplicate the whole block! -# Remote Logging (we use TCP for reliable delivery) -# -# An on-disk queue is created for this action. If the remote host is -# down, messages are spooled to disk and sent when it is up again. -#$ActionQueueFileName fwdRule1 # unique name prefix for spool files -#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible) -#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown -#$ActionQueueType LinkedList # run asynchronously -#$ActionResumeRetryCount -1 # infinite retries if host is down -# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional -#*.* @@remote-host:514 -# ### end of the forwarding rule ### diff --git a/etc/rsyslog.d/listen.conf b/etc/rsyslog.d/listen.conf deleted file mode 100644 index 5f0e870..0000000 --- a/etc/rsyslog.d/listen.conf +++ /dev/null @@ -1 +0,0 @@ -$SystemLogSocketName /dev/log diff --git a/etc/supervisord.conf b/etc/supervisord.conf deleted file mode 100644 index c7c96c7..0000000 --- a/etc/supervisord.conf +++ /dev/null @@ -1,129 +0,0 @@ -; Sample supervisor config file. - -[unix_http_server] -file=/var/run/supervisor/supervisor.sock ; (the path to the socket file) -;chmod=0700 ; sockef file mode (default 0700) -;chown=nobody:nogroup ; socket file uid:gid owner -;username=user ; (default is no username (open server)) -;password=123 ; (default is no password (open server)) - -;[inet_http_server] ; inet (TCP) server disabled by default -;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) -;username=user ; (default is no username (open server)) -;password=123 ; (default is no password (open server)) - -[supervisord] -logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) -logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) -logfile_backups=10 ; (num of main logfile rotation backups;default 10) -loglevel=info ; (log level;default info; others: debug,warn,trace) -pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) -nodaemon=true ; (start in foreground if true;default false) -minfds=1024 ; (min. avail startup file descriptors;default 1024) -minprocs=200 ; (min. avail process descriptors;default 200) -;umask=022 ; (process file creation umask;default 022) -user=root ; (default is current user, required if root) -;identifier=supervisor ; (supervisord identifier, default is 'supervisor') -;directory=/tmp ; (default is not to cd during start) -;nocleanup=true ; (don't clean up tempfiles at start;default false) -;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP) -;environment=KEY=value ; (key value pairs to add to environment) -;strip_ansi=false ; (strip ansi escape codes in logs; def. false) - -; the below section must remain in the config file for RPC -; (supervisorctl/web interface) to work, additional interfaces may be -; added by defining them in separate rpcinterface: sections -[rpcinterface:supervisor] -supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface - -[supervisorctl] -serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL for a unix socket -;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket -;username=chris ; should be same as http_username if set -;password=123 ; should be same as http_password if set -;prompt=mysupervisor ; cmd line prompt (default "supervisor") -;history_file=~/.sc_history ; use readline history if available - -; The below sample program section shows all possible program subsection values, -; create one or more 'real' program: sections to be able to control them under -; supervisor. - -;[program:theprogramname] -;command=/bin/cat ; the program (relative uses PATH, can take args) -;process_name=%(program_name)s ; process_name expr (default %(program_name)s) -;numprocs=1 ; number of processes copies to start (def 1) -;directory=/tmp ; directory to cwd to before exec (def no cwd) -;umask=022 ; umask for process (default None) -;priority=999 ; the relative start priority (default 999) -;autostart=true ; start at supervisord start (default: true) -;autorestart=true ; retstart at unexpected quit (default: true) -;startsecs=10 ; number of secs prog must stay running (def. 1) -;startretries=3 ; max # of serial start failures (default 3) -;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) -;stopsignal=QUIT ; signal used to kill process (default TERM) -;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) -;user=chrism ; setuid to this UNIX account to run the program -;redirect_stderr=true ; redirect proc stderr to stdout (default false) -;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO -;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) -;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) -;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) -;stdout_events_enabled=false ; emit events on stdout writes (default false) -;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO -;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) -;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) -;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) -;stderr_events_enabled=false ; emit events on stderr writes (default false) -;environment=A=1,B=2 ; process environment additions (def no adds) -;serverurl=AUTO ; override serverurl computation (childutils) - -; The below sample eventlistener section shows all possible -; eventlistener subsection values, create one or more 'real' -; eventlistener: sections to be able to handle event notifications -; sent by supervisor. - -;[eventlistener:theeventlistenername] -;command=/bin/eventlistener ; the program (relative uses PATH, can take args) -;process_name=%(program_name)s ; process_name expr (default %(program_name)s) -;numprocs=1 ; number of processes copies to start (def 1) -;events=EVENT ; event notif. types to subscribe to (req'd) -;buffer_size=10 ; event buffer queue size (default 10) -;directory=/tmp ; directory to cwd to before exec (def no cwd) -;umask=022 ; umask for process (default None) -;priority=-1 ; the relative start priority (default -1) -;autostart=true ; start at supervisord start (default: true) -;autorestart=unexpected ; restart at unexpected quit (default: unexpected) -;startsecs=10 ; number of secs prog must stay running (def. 1) -;startretries=3 ; max # of serial start failures (default 3) -;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) -;stopsignal=QUIT ; signal used to kill process (default TERM) -;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) -;user=chrism ; setuid to this UNIX account to run the program -;redirect_stderr=true ; redirect proc stderr to stdout (default false) -;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO -;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) -;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) -;stdout_events_enabled=false ; emit events on stdout writes (default false) -;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO -;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) -;stderr_logfile_backups ; # of stderr logfile backups (default 10) -;stderr_events_enabled=false ; emit events on stderr writes (default false) -;environment=A=1,B=2 ; process environment additions -;serverurl=AUTO ; override serverurl computation (childutils) - -; The below sample group section shows all possible group values, -; create one or more 'real' group: sections to create "heterogeneous" -; process groups. - -;[group:thegroupname] -;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions -;priority=999 ; the relative start priority (default 999) - -; The [include] section can just contain the "files" setting. This -; setting can list multiple files (separated by whitespace or -; newlines). It can also contain wildcards. The filenames are -; interpreted as relative to this file. Included files *cannot* -; include files themselves. - -[include] -files = supervisord.d/*.ini diff --git a/etc/supervisord.d/postfix.ini b/etc/supervisord.d/postfix.ini deleted file mode 100644 index 92a254f..0000000 --- a/etc/supervisord.d/postfix.ini +++ /dev/null @@ -1,5 +0,0 @@ -[program:postfix] -process_name = master -command=/usr/sbin/postfix -c /etc/postfix start -startsecs=0 -autorestart=false diff --git a/etc/supervisord.d/readlog.ini b/etc/supervisord.d/readlog.ini deleted file mode 100644 index 9b62c99..0000000 --- a/etc/supervisord.d/readlog.ini +++ /dev/null @@ -1,4 +0,0 @@ -[program:readlog] -command=/usr/bin/tail -f /var/log/maillog -stdout_logfile=/dev/fd/1 -stdout_logfile_maxbytes=0 diff --git a/etc/supervisord.d/rsyslog.ini b/etc/supervisord.d/rsyslog.ini deleted file mode 100644 index c54714d..0000000 --- a/etc/supervisord.d/rsyslog.ini +++ /dev/null @@ -1,2 +0,0 @@ -[program:rsyslog] -command=/usr/sbin/rsyslogd -n diff --git a/run.sh b/run.sh index 675fb1d..4665ba7 100644 --- a/run.sh +++ b/run.sh @@ -26,6 +26,7 @@ SMTP_PORT="${SMTP_PORT:-587}" DOMAIN=`echo ${SERVER_HOSTNAME} | awk 'BEGIN{FS=OFS="."}{print $(NF-1),$NF}'` # Set needed config options +add_config_value "maillog_file" "/dev/stdout" add_config_value "myhostname" ${SERVER_HOSTNAME} add_config_value "mydomain" ${DOMAIN} add_config_value "mydestination" 'localhost' @@ -90,4 +91,4 @@ fi # starting services rm -f /var/spool/postfix/pid/master.pid -exec supervisord -c /etc/supervisord.conf +exec /usr/sbin/postfix -c /etc/postfix start-fg