Commit 5cb8a2e1 by Alin Voinea

Merge pull request #1 from DanielM-gh/master

refs #31595: add Chaperone, use Centos 7, remove example folder
parents 4ac9ede1 383ed618
FROM centos:6 FROM centos:7
RUN yum -y install postfix mailx cyrus-sasl cyrus-sasl-plain python-setuptools python-pip rsyslog RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 && \
yum updateinfo -y && \
yum install -y epel-release && \
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && \
yum install -y python34-devel postfix cyrus-sasl cyrus-sasl-plain mailx && \
yum clean all
VOLUME ["/var/log"] RUN curl https://bootstrap.pypa.io/get-pip.py | python3.4 && \
pip3 install chaperone
ADD postfix.sh /postfix.sh RUN mkdir -p /etc/chaperone.d
COPY chaperone.conf /etc/chaperone.d/chaperone.conf
CMD ["sh", "-c", "/postfix.sh"] COPY docker-setup.sh /docker-setup.sh
RUN chmod +x /docker-setup.sh
ENTRYPOINT ["/usr/bin/chaperone"]
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
Available tags: [latest](https://github.com/eea/eea.docker.postfix/blob/master/Dockerfile), [eionet](https://github.com/eea/eea.docker.postfix/blob/master/eionet/Dockerfile). Available tags: [latest](https://github.com/eea/eea.docker.postfix/blob/master/Dockerfile), [eionet](https://github.com/eea/eea.docker.postfix/blob/master/eionet/Dockerfile).
This image is a CentOS 6 container running postfix preconfigured for SMTP relay authentication. It runs as an open relay mail server inside the Docker Containers internal network, so it can be used by any container to send emails through the remote relay. This image is a CentOS 7 container running postfix preconfigured for SMTP relay authentication. It runs as an open relay mail server inside the Docker Containers internal network, so it can be used by any container to send emails through the remote relay.
The hostname of the postfix server is set in the environment variable `MTP_HOST` and is mandatory. Postfix will run as an open relay server only if the variables below are also set. The hostname of the postfix server is set in the environment variable `MTP_HOST` and is mandatory. Postfix will run as an open relay server only if the variables below are also set.
...@@ -23,37 +23,20 @@ Using the mount directive ```-v /etc/localtime:/etc/localtime:ro``` will make su ...@@ -23,37 +23,20 @@ Using the mount directive ```-v /etc/localtime:/etc/localtime:ro``` will make su
## Example usage ## Example usage
In the `example` folder, there is an example centos container than can be used to test connectivity. From the postfix container ("postfix"):
cd example # from an application, python:
docker build -t example . $ python
docker run --rm -it -v /etc/localtime:/etc/localtime:ro --link=postfix:postfixcontainer example >>> import smtplib, os
>>> s = smtplib.SMTP(os.getenv('HOSTNAME'))
>>> s.sendmail('test@mydomain.com', ['user@example.com'], 'test')
# from commandline: From another application container ("app"):
$ mail test@example.com
docker run --rm -it -v /etc/localtime:/etc/localtime:ro --name=app --link=postfix:postfixcontainer app_image
# from an application, python: # from an application, python:
$ python $ python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import smtplib >>> import smtplib
>>> s = smtplib.SMTP('postfixcontainer') >>> s = smtplib.SMTP('postfixcontainer')
>>> s.sendmail('test@mydomain.com', ['user@example.com'], 'test') >>> s.sendmail('test@mydomain.com', ['user@example.com'], 'test')
{}
## Existing container configuration
If you have an existing container that makes use of `/usr/bin/sendmail` to send emails, and you want to use this postfix image instead, you must modify your `Dockerfile` to :
Install mailx/ssmtp:
# RUN apt-get install -y mailx ssmtp
or
# RUN yum install -y mailx ssmtp
Modify and copy / mount the `/etc/ssmtp.conf` file (see: https://github.com/eea/eea.docker.postfix/blob/master/example/ssmtp.conf). Change `mailhub` directive to the name of the postfixcontainer.
# ADD ssmtp.conf /etc/ssmtp.conf
You can check the example image for more details.
setup.service: {
service_groups: INIT,
command: "/docker-setup.sh"
}
postfix.service: {
service_groups: IDLE,
command: "postfix start"
}
console.logging: {
selector: "*.warn",
stdout: true
}
#!/bin/bash #!/bin/bash
# Set up user # configure postfix
function setup_conf_and_secret { function setup_conf_and_secret {
postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.trust.crt' postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.trust.crt'
postconf -e "relayhost = [$MTP_RELAY]:$MTP_PORT" postconf -e "relayhost = [$MTP_RELAY]:$MTP_PORT"
...@@ -23,8 +24,4 @@ else ...@@ -23,8 +24,4 @@ else
postconf -e 'mynetworks = 127.0.0.1/32 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8' postconf -e 'mynetworks = 127.0.0.1/32 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8'
fi fi
service rsyslog start newaliases
service postfix start
touch /var/log/maillog
tail -f /var/log/maillog
FROM centos:6
RUN yum install -y mailx ssmtp
ADD ssmtp.conf /etc/ssmtp/ssmtp.conf
CMD ["bash"]
#
# /etc/ssmtp.conf -- a config file for sSMTP sendmail.
#
# See the ssmtp.conf(5) man page for a more verbose explanation of the
# available options.
#
# The person who gets all mail for userids < 500
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required
# no MX records are consulted. Commonly mailhosts are named mail.domain.com
# The example will fit if you are in domain.com and your mailhub is so named.
mailhub=postfixcontainer
# Where will the mail seem to come from?
#RewriteDomain=
# The full hostname
#Hostname=
# Set this to never rewrite the "From:" line (unless not given) and to
# use that address in the "from line" of the envelope.
FromLineOverride=YES
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment