Удалите эти строки:
RUN touch /dev/xconsole && chgrp syslog /dev/xconsole && chmod 664 /dev/xconsole
RUN service rsyslog restart
И обновите CMD
для запуска rsyslog сначала:
CMD service rsyslog start && service postfix start && tail -f /var/log/mail.log
Поскольку RUN
выполняет команду во времяimage build тогда как CMD
выполняет команду в работающем контейнере, и вам нужно запустить rsyslogd в работающем контейнере.
Результат Dockerfile может выглядеть так:
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y libsasl2-modules postfix rsyslog; \
rm -rf /var/lib/apt/lists/*
RUN echo "[smtp.gmail.com]:587 email@gmail.com:password" > /etc/postfix/sasl_passwd; \
postmap /etc/postfix/sasl_passwd; \
sed -i '/relayhost*/c\relayhost = [smtp.gmail.com]:587' /etc/postfix/main.cf; \
sed -i '/smtp_sasl_auth_enable*/c\smtp_sasl_auth_enable = yes' /etc/postfix/main.cf; \
sed -i '/smtp_sasl_security_options*/c\smtp_sasl_security_options = noanonymous' /etc/postfix/main.cf; \
sed -i '/smtp_sasl_password_maps*/c\smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd' /etc/postfix/main.cf; \
sed -i '/smtp_tls_security_level*/c\smtp_tls_security_level = encrypt' /etc/postfix/main.cf; \
sed -i '/smtp_tls_CAfile*/c\smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt' /etc/postfix/main.cf
EXPOSE 587
CMD service rsyslog start && service postfix start && tail -f /var/log/mail.log
Построить это: docker build -t postfix -f Dockerfile.postfix .
И когда вы запустите его: docker run -it --rm --name postfix postfix
... тогда у вас есть почтовый журнал в консоли:
* Starting enhanced syslogd rsyslogd [ OK ]
* Starting Postfix Mail Transport Agent postfix postfix: Postfix is running with backwards-compatible default settings
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details
postfix: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"
[ OK ]
Sep 26 20:11:01 6009a2e3d206 postfix[111]: Postfix is running with backwards-compatible default settings
Sep 26 20:11:01 6009a2e3d206 postfix[111]: See http://www.postfix.org/COMPATIBILITY_README.html for details
Sep 26 20:11:01 6009a2e3d206 postfix[111]: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"
Sep 26 20:11:01 6009a2e3d206 postfix/master[156]: daemon started -- version 3.1.0, configuration /etc/postfix
Sep 26 20:11:01 6009a2e3d206 postfix/pickup[159]: error: open file /etc/mailname: No such file or directory
Sep 26 20:11:01 6009a2e3d206 postfix/qmgr[160]: error: open file /etc/mailname: No such file or directory
Вы можететакже проверьте почтовый журнал с помощью команды exec: docker exec postfix cat /var/log/mail.log
.Это может быть полезно при запуске контейнера в качестве демона (-d
flag).
Что касается ошибки rsyslogd-2039: Could not open output pipe
- вы можете игнорировать ее.
Но если вы не хотите игнорировать его, вы можете обновить CMD
и получить его так:
CMD touch /dev/xconsole && chgrp syslog /dev/xconsole && chmod 664 /dev/xconsole && service rsyslog start && service postfix start && tail -f /var/log/mail.log