GithubHelp home page GithubHelp logo

bleala / postfix-dockerized Goto Github PK

View Code? Open in Web Editor NEW

This project forked from juanluisbaptiste/docker-postfix

0.0 0.0 0.0 109 KB

Postfix - a simple SMTP TLS relay with no local authentication enabled. DOCKERIZED!

License: GNU General Public License v3.0

Shell 83.99% Dockerfile 16.01%

postfix-dockerized's Introduction

Postfix-DOCKERIZED

Docker Image Version Docker Stars Docker Pulls

A simple Postfix SMTP TLS relay docker Alpine Linux based image with no local authentication enabled (to be run in a secure LAN).

About Postfix

Disclaimer: I am just the maintainer of this docker container, I did not write the software. Visit the Official Homepage to thank the author(s)! :)

Info: I originally forked this repositofy from Juan Luis Baptiste. Thank you for your work! :)

What is Postfix? It is Wietse Venema's mail server that started life at IBM research as an alternative to the widely-used Sendmail program. After eight years at Google, Wietse continues to maintain Postfix.

Postfix attempts to be fast, easy to administer, and secure. The outside has a definite Sendmail-ish flavor, but the inside is completely different.

Official Website - https://www.postfix.org/

Docs - https://www.postfix.org/documentation.html

My Github Repository - https://github.com/Bleala/Postfix-DOCKERIZED

Docker Hub - https://hub.docker.com/r/bleala/postfix


Image, Versions and Architecture

I built this image based on Alpine Linux.

There will always be two different versions:

Tag Content
Latest Contains the latest stable version
x.x.x Contains the Postfix and Alpine versions mentioned at the bottom of the page and in the release notes

I am using semantic versioning for this image. For all supported architectures there are the following versioned tags:

  • Major (1)
  • Minor (1.0)
  • Patch (1.0.0)
  • Latest

There are also several platforms supported:

Platform:

  • linux/amd64
  • linux/386
  • linux/arm64
  • linux/arm/v6
  • linux/arm/v7

Usage

To start the container you can run the following:

docker run -d --name postfix -p "25:25"  \
        -e SMTP_SERVER=your.mail.server \
        -e SERVER_HOSTNAME=your.mail.server \
        bleala/postfix:latest

But since docker compose is easier to maintain, I'll give you a valid docker compose example:

version: "3.9"

networks:
  postfix:
    name: postfix
    driver: bridge

secrets:
  smtp_password:
    file: /path/to/your/secret/file/smtp_password

services:
  # Postfix SMTP Relay - Simple Postfix SMTP TLS relay docker alpine based image with no local authentication enabled (to be run in a secure LAN).
  # https://hub.docker.com/r/bleala/postfix
  # https://github.com/Bleala/Postfix-DOCKERIZED
  postfix:
    image: bleala/postfix:latest
    container_name: postfix
    hostname: postfix
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    environment:
      # Mandatory: Server address of the SMTP server to use.
      SMTP_SERVER:
      # Optional: (Default value: 587) Port address of the SMTP server to use.
      SMTP_PORT: 
      # Optional: Username to authenticate with.
      SMTP_USERNAME:
      # Optional (Mandatory if SMTP_USERNAME is set): Password of the SMTP user. (Not needed if SMTP_PASSWORD_FILE is used)
      SMTP_PASSWORD:
      # Mandatory: Server hostname for the Postfix container. Emails will appear to come from the hostname's domain.
      SERVER_HOSTNAME:
      # Optional: This will add a header for tracking messages upstream. Helpful for spam filters. Will appear as "RelayTag: ${SMTP_HEADER_TAG}" in the email headers.
      SMTP_HEADER_TAG:
      # Optional: Setting this will allow you to add additional, comma seperated, subnets to use the relay. Used like SMTP_NETWORKS='xxx.xxx.xxx.xxx/xx,xxx.xxx.xxx.xxx/xx'.
      SMTP_NETWORKS:
      # Optional: Set this to a mounted file containing the password, to avoid passwords in env variables.
      SMTP_PASSWORD_FILE:
      # Optional: Set this to yes to always add missing From:, To:, Date: or Message-ID: headers.
      ALWAYS_ADD_MISSING_HEADERS: yes
      # Optional: This will rewrite the from address overwriting it with the specified address for all email being relayed.
      OVERWRITE_FROM: "Your Name <[email protected]>"
      # Optional: This will use allow you to set a custom $mydestination value. Default is localhost.
      DESTINATION:
      # Optional: This will output the subject line of messages in the log.
      LOG_SUBJECT: yes
      # Optional: This will disable (no) or enable (yes) the use of SMTPUTF8
      SMTPUTF8_ENABLE: no
      # Optional: This will use allow you to set a custom $message_size_limit value. Default is 10240000.
      MESSAGE_SIZE_LIMIT:
    env_file:
      - .env
    networks:
      postfix:
    ports:
      - target: 25
        published: 25
        protocol: tcp
        mode: host
    secrets:
      - smtp_password
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime
        read_only: true

You can start the docker-compose.yml with the following command

docker compose up -d

If you want to see the container logs, you can run

docker compose logs -f

or

docker logs -f postfix

Google specifics

Gmail by default does not allow email clients that don't use OAUTH 2 for authentication (like Thunderbird or Outlook). First you need to enable access to "Less secure apps" on your google settings.

Also take into account that email From: header will contain the email address of the account being used to authenticate against the Gmail SMTP server (SMTP_USERNAME), the one on the email will be ignored by Gmail unless you add it as an alias.

Debugging

If you need troubleshooting the container you can set the environment variable DEBUG=yes for a more verbose output.


Environment Variables

You can set nine different environment variables if you want to:

Variable Info Value
SMTP_SERVER Server address of the SMTP server to use Mandatory, default to unset
SERVER_HOSTNAME Server hostname for the Postfix container
Emails will appear to come from the hostname's domain
Mandatory, default to unset
SMTP_PORT Port address of the SMTP server to use Optional, default value is 587
SMTP_USERNAME Username to authenticate with Optional, default to unset
SMTP_PASSWORD Password of the SMTP user
If SMTP_PASSWORD_FILE is set, not needed
Mandatory, if SMTP_USERNAME is set
Default to unset
SMTP_HEADER_TAG This will add a header for tracking messages upstream
Helpful for spam filters
Will appear as "RelayTag: ${SMTP_HEADER_TAG}" in the email headers
Optional, default to unset
SMTP_NETWORKS Setting this will allow you to add additional, comma seperated, subnets to use the relay
Used like -e SMTP_NETWORKS='xxx.xxx.xxx.xxx/xx,xxx.xxx.xxx.xxx/xx'
Optional, default to unset
SMTP_USERNAME_FILE Setting this to a mounted file containing the username, to avoid usernames in env variables
Used like -e SMTP_USERNAME_FILE=/secrets/smtp_username
Optional, default to unset
SMTP_PASSWORD_FILE Setting this to a mounted file containing the username, to avoid usernames in env variables
Used like -e SMTP_PASSWORD_FILE=/secrets/smtp_username
Optional, default to unset
ALWAYS_ADD_MISSING_HEADERS This is related to the always_add_missing_headers Postfix option
If set to yes, Postfix will always add missing headers among From:, To:, Date: or Message-ID:
Optional, default to no
OVERWRITE_FROM This will rewrite the from address overwriting it with the specified address for all email being relayed
Example settings:
OVERWRITE_FROM=[email protected]
OVERWRITE_FROM="Your Name" [email protected]
Optional, default to unset
DESTINATION This will define a list of domains from which incoming messages will be accepted Optional, default to unset
LOG_SUBJECT This will output the subject line of messages in the log Optional, default to no
SMTPUTF8_ENABLE This will enable or disable support for SMTPUTF8
Valid values are no to disable and yes to enable
Not setting this variable will use the postfix default, which is yes.
Optional, default to yes
MESSAGE_SIZE_LIMIT This will change the default limit of 10240000 bytes (10MB) Optional, default to 10240000

Build instructions

Clone this repo and then:

cd docker-Postfix
docker build -t bleala/postfix:dev .

Or you can use the provided docker-compose.yml file:

docker compose build

For more information on using multiple compose files see here. You can also find a prebuilt docker image from Docker Hub, which can be pulled with this command:

docker pull bleala/postfix:latest

Versions

1.0.0 - 12.04.2024: Initial Version - Postfix 3.8.6, Alpine 3.19.1

Old Version History

1.0.0 - 12.04.2024: Initial Version - Postfix 3.8.6, Alpine 3.19.1


Hope you enjoy it! :)


postfix-dockerized's People

Contributors

juanluisbaptiste avatar bleala avatar turboaaa avatar lucasnz avatar revsystem avatar watiko avatar snyk-bot avatar dabde avatar scholliyt avatar solidnerd avatar erikmd avatar dtcooper avatar baschny avatar jvandenbroek avatar swedishborgie avatar nassoor avatar envy avatar virb3 avatar linucksrox avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.