Amriteya
Amriteya

Reputation: 1172

Sending mail using GNU Mailutils inside Docker container

I have created a docker image where I install the mailutils package using:

RUN apt-get update && apt-get install -y mailutils

As a sample command, I am running:

mail -s 'Hello World' {email-address} <<< 'Message body'

When I am executing the same command on my local machine, it sends the mail. However, in docker container, it is not showing any errors but there is no mail received on the specified e-mail id.

I tried with --net=host argument in while spawning my docker container.

Following is my docker command:

docker run --net=host -p 0.0.0.0:8000:8000 {imageName}:{tagName} {arguments}

Is there anything that I am missing? Could someone explain the networking concepts behind this problem?

Upvotes: 1

Views: 3129

Answers (2)

Amriteya
Amriteya

Reputation: 1172

Thanks for the response @pilasguru. ssmtp works for sending mail from within a docker container.

Just to make the response more verbose, here are the things one would need to do.

  • Install ssmtp in the container. You could do this by the following command.

    RUN apt-get update && apt-get -y install ssmtp.

  • You could configure the configurations for ssmtp at /etc/ssmtp/ssmtp.conf

    Ideal configurations.

`

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root={root-name}

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub={smtp-server}

# Where will the mail seem to come from?
rewriteDomain={domain-name}

# The full hostname
hostname=c67fcdc6361d

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

`

  • You can directly copy that from your root directory where you're building your docker image. For eg. you keep your configurations in file named: my.conf.

    You can copy them in your docker container using the command:

    COPY ./my.conf /etc/ssmtp/ssmtp.conf

  • Send a mail using a simple command such as:

    ssmtp [email protected] < filename.txt

  • You can even send an attachment, specify to and from using the following command:

    echo -e "to: {to-addr}\nFrom: {from-addr}\nsubject: {subject}\n"| (cat - && uuencode /path/to/file/inside/container {attachment-name-in mail}) | ssmtp [email protected]

  • uuencode could be installed by the command apt-get install sharutils

Upvotes: 2

pilasguru
pilasguru

Reputation: 198

Install ssmtp and configure to send all mails to your relayhost.

https://wiki.debian.org/sSMTP

Upvotes: 2

Related Questions