Difference between revisions of "Smtp client"

From UVOO Tech Wiki
Jump to navigation Jump to search
(Created page with "# Server ``` docker run --rm -p 1587:587 --name postfix -e SMTPD_USERS="valid:password,user1:password1,user2:password2" -e MAILNAME=mail.example.com panubo/postfix:latest ```...")
 
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
https://github.com/jeremybusk/docker-postfix from https://github.com/panubo/docker-postfix
 +
 
# Server
 
# Server
 +
 +
Gen cert
 +
```
 +
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout server.key -out server.crt -subj "/C=US/ST=Utah/L=SLC/O=Example
 +
Corp/OU=Testing/CN=relay.uvoo.io"
 +
```
 +
 +
Run docker
 
```
 
```
docker run --rm -p 1587:587 --name postfix -e SMTPD_USERS="valid:password,user1:password1,user2:password2" -e MAILNAME=mail.example.com panubo/postfix:latest
+
docker run --rm -p 1587:587 --name postfix -e MYNETWORKS="127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16" -e SMTPD_USERS="valid:password,user1:password1,user2:password2" -e MAILNAME=relay.uvoo.com -v ${PWD}/server.crt:/etc/ssl/certs/server.crt:ro -v ${PWD}/server.key:/etc/ssl/private/server.key:ro -e TLS_KEY="/etc/ssl/private/server.key" -e TLS_CRT="/etc/ssl/certs/server.crt" panubo/postfix:latest
 
```
 
```
  
Line 14: Line 24:
 
export SMTP_MSG_SUBJECT="test subject"
 
export SMTP_MSG_SUBJECT="test subject"
 
export SMTP_MSG_BODY="test body"
 
export SMTP_MSG_BODY="test body"
 +
export SMTP_DEBUG=true
 
export SMTP_AUTH=true
 
export SMTP_AUTH=true
 
export SMTP_AUTH_USERNAME=valid
 
export SMTP_AUTH_USERNAME=valid
Line 25: Line 36:
 
import smtplib, ssl
 
import smtplib, ssl
 
from email.mime.text import MIMEText
 
from email.mime.text import MIMEText
 +
from email import utils
  
 
SMTP_HOST = os.environ.get('SMTP_HOST')
 
SMTP_HOST = os.environ.get('SMTP_HOST')
Line 35: Line 47:
 
SMTP_AUTH_USERNAME = os.environ.get('SMTP_AUTH_USERNAME')
 
SMTP_AUTH_USERNAME = os.environ.get('SMTP_AUTH_USERNAME')
 
SMTP_AUTH_USERPASS = os.environ.get('SMTP_AUTH_USERPASS')
 
SMTP_AUTH_USERPASS = os.environ.get('SMTP_AUTH_USERPASS')
 +
SMTP_DEBUG = os.environ.get('SMTP_DEBUG')
  
  
Line 42: Line 55:
 
     msg['From'] = SMTP_FROM_EMAIL
 
     msg['From'] = SMTP_FROM_EMAIL
 
     msg['To'] = SMTP_TO_EMAILS
 
     msg['To'] = SMTP_TO_EMAILS
     msg = msg.as_string()
+
     msg['Date'] = utils.formatdate(localtime = 1)
 +
    msg['Message-ID'] = utils.make_msgid()
 +
    msg_as_string = msg.as_string()
  
 
     with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as session:  # 587
 
     with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as session:  # 587
         session.set_debuglevel(True)
+
         if SMTP_DEBUG == "true":
 +
            session.set_debuglevel(True)
 
         session.ehlo()
 
         session.ehlo()
 
         # context = ssl.create_default_context()
 
         # context = ssl.create_default_context()
Line 52: Line 68:
 
         if SMTP_AUTH == "true":
 
         if SMTP_AUTH == "true":
 
             session.login(SMTP_AUTH_USERNAME, SMTP_AUTH_USERPASS)
 
             session.login(SMTP_AUTH_USERNAME, SMTP_AUTH_USERPASS)
         session.sendmail(SMTP_FROM_EMAIL, SMTP_TO_EMAILS, msg)
+
         session.sendmail(SMTP_FROM_EMAIL, SMTP_TO_EMAILS, msg_as_string)
         session.quit()
+
         session.close()
 +
        # session.quit()
  
  
Line 62: Line 79:
 
```
 
```
 
. .env
 
. .env
./smpt-client.py
+
./smtp-client.py
 
```
 
```

Latest revision as of 04:04, 10 May 2022

https://github.com/jeremybusk/docker-postfix from https://github.com/panubo/docker-postfix

Server

Gen cert

openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout server.key -out server.crt -subj "/C=US/ST=Utah/L=SLC/O=Example
 Corp/OU=Testing/CN=relay.uvoo.io"

Run docker

docker run --rm -p 1587:587 --name postfix -e MYNETWORKS="127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16" -e SMTPD_USERS="valid:password,user1:password1,user2:password2" -e MAILNAME=relay.uvoo.com -v ${PWD}/server.crt:/etc/ssl/certs/server.crt:ro -v ${PWD}/server.key:/etc/ssl/private/server.key:ro -e TLS_KEY="/etc/ssl/private/server.key" -e TLS_CRT="/etc/ssl/certs/server.crt" panubo/postfix:latest

Client

.env

export SMTP_HOST=localhost
export SMTP_PORT=1587
export SMTP_FROM_EMAIL=no-reply@uvoo.io
export SMTP_TO_EMAILS=test@uvoo.io
export SMTP_MSG_SUBJECT="test subject"
export SMTP_MSG_BODY="test body"
export SMTP_DEBUG=true
export SMTP_AUTH=true
export SMTP_AUTH_USERNAME=valid
export SMTP_AUTH_USERPASS=password

./smtp-client.py

#!/usr/bin/env python3
import os
import smtplib, ssl
from email.mime.text import MIMEText
from email import utils

SMTP_HOST = os.environ.get('SMTP_HOST')
SMTP_PORT = os.environ.get('SMTP_PORT')
SMTP_FROM_EMAIL = os.environ.get('SMTP_FROM_EMAIL')
SMTP_TO_EMAILS = os.environ.get('SMTP_TO_EMAILS')
SMTP_MSG_SUBJECT = os.environ.get('SMTP_MSG_SUBJECT')
SMTP_MSG_BODY = os.environ.get('SMTP_MSG_BODY')
SMTP_AUTH = os.environ.get('SMTP_AUTH')
SMTP_AUTH_USERNAME = os.environ.get('SMTP_AUTH_USERNAME')
SMTP_AUTH_USERPASS = os.environ.get('SMTP_AUTH_USERPASS')
SMTP_DEBUG = os.environ.get('SMTP_DEBUG')


def send_email():
    msg = MIMEText(SMTP_MSG_BODY)
    msg['Subject'] = SMTP_MSG_SUBJECT
    msg['From'] = SMTP_FROM_EMAIL
    msg['To'] = SMTP_TO_EMAILS
    msg['Date'] = utils.formatdate(localtime = 1)
    msg['Message-ID'] = utils.make_msgid()
    msg_as_string = msg.as_string()

    with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as session:  # 587
        if SMTP_DEBUG == "true":
            session.set_debuglevel(True)
        session.ehlo()
        # context = ssl.create_default_context()
        context = ssl._create_unverified_context()
        session.starttls(context=context)
        if SMTP_AUTH == "true":
            session.login(SMTP_AUTH_USERNAME, SMTP_AUTH_USERPASS)
        session.sendmail(SMTP_FROM_EMAIL, SMTP_TO_EMAILS, msg_as_string)
        session.close()
        # session.quit()


send_email()

Run

. .env
./smtp-client.py