diff --git a/.woodpecker/build-dev.yml b/.woodpecker/build-dev.yml index 0386310..7b140b5 100644 --- a/.woodpecker/build-dev.yml +++ b/.woodpecker/build-dev.yml @@ -1,5 +1,8 @@ when: branch: dev + event: [push, manual] + path: + include: [ '.woodpecker/build-dev.yaml', 'build/*', 'Dockerfile' ] pipeline: build_and_publish: @@ -11,7 +14,3 @@ pipeline: context: ./build repo: vistanarvas/${CI_REPO_NAME} tag: dev - when: - path: - include: [ '.woodpecker/build-dev.yaml', 'build/*', 'Dockerfile' ] - event: [push, manual] diff --git a/.woodpecker/build.yml b/.woodpecker/build.yml index 91a2908..39dbae4 100644 --- a/.woodpecker/build.yml +++ b/.woodpecker/build.yml @@ -1,5 +1,9 @@ when: branch: master + event: [push, tag, deployment, cron, manual] + cron: nightly + path: + include: [ '.woodpecker/build.yml', 'build/*', 'Dockerfile' ] pipeline: check_base: @@ -23,8 +27,3 @@ pipeline: context: ./build repo: vistanarvas/${CI_REPO_NAME} auto_tag: true - when: - path: - include: [ '.woodpecker/build.yml', 'build/*', 'Dockerfile' ] - cron: nightly - event: [push, tag, deployment, cron, manual] diff --git a/README.md b/README.md index c87b1b0..f18b68a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,66 @@ # msmtp +[![status-badge](https://woodpecker.narvas.tech/api/badges/vista/msmtp/status.svg)](https://woodpecker.narvas.tech/vista/msmtp) -send mail from your container \ No newline at end of file +send mail from your container +this image is intended to be used in a CI piple + + +## Environment variables + +| Variable Name | Requered | Description | Example +|--------------------|-----|------------------|-------- +|`SMTP_HOST` | Yes | The smtp url of your email server | `smtp.gmail.com` +|`SMTP_PORT` | no | The smtp port usually `25`, `465` or `587` *this is the default* | `587` +|`SMTP_FROM` | Yes | Your email address | `my_email@gmail.com` +|`SMTP_USER` | Yes | Your username for the server
usually the same as your email addres or the part before the @ | `my_email` +|`SMTP_PASSWORD` | Yes | its where the password go's
*the password gets stored in plaintext on the container* | `Hunter22` +|`EMAIL` | No | The "raw" email | Example [here](#the-second-way) +|`TO_ADDRESSES` | Yes | The adress or addresses to send to
to send to multiple addresses add `, ` (comma and space) betean each address | `alice@outlook.com, bob@gamil.com` +|`SUBJECT` | No | The email subject | `text` +|`MESSAGE` | No | The body off the email | `lots of text` +|`SMTP_AUTH` | No | enable/disable authentication
Valid values are `off` or `on` *this is the default* | `on` +|`SMTP_TLS` | No | enable/disable TLS encryption
Valid values are `off` or `on` *this is the default* | `on` + +### Environment variables files +it is also posable subsitute the variables [above](#environment-variables) with a file +to use this simpy take what you normaly use for the variable and put it in a file +and make the contents of the `_FILE` variable the path to that file +using this way other proccesses could provide the email content +all of these are optinal but when uses the overwrite the counterpart variable +| Variable Name | Description | +|--------------------|-------------| +|`MSMTP_CONFIG_FILE` | This is the config file msmtp uses
this replaces the need for most other Environment variables
When you use this only `EMAIL` or `TO_ADDRESSES`, `SUBJECT`, `MESSAGE` are requered
to see what the file sould contain have a look at the [Documentation](https://marlam.de/msmtp/msmtp.html#Configuration-files) or a [Example](https://marlam.de/msmtp/msmtprc.txt)
the file **MUST** have [permissions](https://linuxcommand.org/lc3_lts0090.php) set to 600 +|`SMTP_HOST_FILE` | +|`SMTP_PORT_FILE` | +|`SMTP_FROM_FILE` | +|`SMTP_USER_FILE` | +|`SMTP_PASSWORD_FILE`| +|`EMAIL_FILE` | + +## Writing the email + +There a 2 ways to write the actual email +### the first way +provide the `TO_ADDRESSES` and `SUBJECT` and `MESSAGE` environment variables +this is a very basic and simple way to write the email + +### the second way +provide the `EMAIL` environment variable +this is a more advanced way to write the email +using the `EMAIL` overwrites the `TO_ADDRESSES` and `SUBJECT` and `MESSAGE` environment variables +a basic `EMAIL` is formated like below +``` +To: recipient@gmail.com +Subject: The subject (followd by a empty line) + +This is the first like of the body +``` + +## Defaults for popular mail servers +if its not on the list figger it out yourself *and make a pull request* +tip: search for your servers imap clent settings usually it also lists smtp settings +| Name | `SMTP_HOST` | `SMTP_PORT` | +|---------|-------------------------|-------------| +| Gmail | `smtp.gmail.com` | `587` | +| Outlook | `smtp-mail.outlook.com` | `587` | +| Yahoo | `smtp.mail.yahoo.com` | `587` | diff --git a/build/start-container.sh b/build/start-container.sh index 81c6271..3877c2c 100644 --- a/build/start-container.sh +++ b/build/start-container.sh @@ -1,15 +1,50 @@ #! /usr/bin/env sh -echo "defaults -auth on -tls on +if [ -n "${SMTP_HOST_FILE}" ]; then + SMTP_HOST=$cat ${SMTP_HOST_FILE}); +fi -account default -host ${SMTP_HOST} -port ${SMTP_PORT} -tls_starttls ${SMTP_STARTTLS} -from ${SMTP_FROM} -user ${SMTP_USER} -password ${SMTP_PASSWORD}" > ~/.msmtprc +if [ -n "${SMTP_PORT_FILE}" ]; then + SMTP_PORT=$(cat ${SMTP_PORT_FILE}); +fi -echo -e "Subject: ${SUBJECT}\n\n${MESSAGE}" | msmtp ${TO_ADDRESS} \ No newline at end of file +if [ -n "${SMTP_FROM_FILE}" ]; then + SMTP_FROM=$(cat ${SMTP_FROM_FILE}); +fi + +if [ -n "${SMTP_USER_FILE}" ]; then + SMTP_USER=$(cat ${SMTP_USER_FILE}); +fi + +if [ -n "${SMTP_PASSWORD_FILE}" ]; then + SMTP_PASSWORD=$(cat ${SMTP_PASSWORD_FILE}); +fi + +IFS= + +if [ -n "${EMAIL_FILE}" ]; then + EMAIL=$(cat ${EMAIL_FILE}); +else + if [ -z "${EMAIL}" ]; then + EMAIL="To: ${TO_ADDRESSES}\nSubject: ${SUBJECT}\n\n${MESSAGE}"; + fi +fi + +if [ -z "${MSMTP_CONFIG_FILE}" ]; then + MSMTP_CONFIG_FILE=~/.msmtprc + touch ${MSMTP_CONFIG_FILE} + chmod 600 ${MSMTP_CONFIG_FILE} + echo "defaults + auth ${SMTP_AUTH:-on} + tls ${SMTP_TLS:-on} + + account default + host ${SMTP_HOST} + port ${SMTP_PORT:-587} + tls_starttls ${SMTP_STARTTLS:-on} + from ${SMTP_FROM} + user ${SMTP_USER} + password ${SMTP_PASSWORD}" > ${MSMTP_CONFIG_FILE} +fi + +echo -e "${EMAIL}" | msmtp --read-recipients -C ${MSMTP_CONFIG_FILE} \ No newline at end of file