Skip to content
This repository has been archived by the owner on Jun 27, 2024. It is now read-only.

Commit

Permalink
feat: First version (6)
Browse files Browse the repository at this point in the history
  • Loading branch information
lholota authored Jul 29, 2022
1 parent 645b575 commit 7c854c1
Show file tree
Hide file tree
Showing 34 changed files with 2,926 additions and 606 deletions.
9 changes: 9 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"env": {
"test": {
"plugins": [
"@babel/plugin-transform-modules-commonjs"
]
}
}
}
34 changes: 0 additions & 34 deletions .github/workflows/ci.yml

This file was deleted.

70 changes: 8 additions & 62 deletions .github/workflows/ci_cd.yml
Original file line number Diff line number Diff line change
@@ -1,74 +1,20 @@
name: CI/CD on master
name: CI/CD
on:
push:
branches:
- master

env:
IMAGE_NAME: "homecentr/$$IMAGE_NAME$$"

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write # To add version tags
packages: write # To push docker image
issues: write # Semantic release to link issues
steps:
- uses: actions/checkout@master

- name: "Determine release version"
uses: docker://ghcr.io/codfish/semantic-release-action:v1.9.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Verify Dockerfile with Hadolint
uses: brpaz/hadolint-action@master

- name: "Build Docker image"
if: env.RELEASE_VERSION != ''
run: |
docker build . \
--tag "$IMAGE_NAME:$RELEASE_VERSION" \
--tag "$IMAGE_NAME:latest" \
--tag "ghcr.io/$IMAGE_NAME:$RELEASE_VERSION" \
--tag "ghcr.io/$IMAGE_NAME:latest" \
--label "org.label-schema.schema-version=1.0" \
--label "org.label-schema.vcs-ref=${GITHUB_SHA}" \
--label "org.label-schema.vcs-url=https://github.com/${GITHUB_REPOSITORY}" \
--label "org.label-schema.url=https://github.com/${GITHUB_REPOSITORY}" \
--label "org.label-schema.vendor=Homecentr" \
--label "version=$RELEASE_VERSION" \
--label "org.label-schema.build-date=$(date '+%F %T')"
- name: Test Docker image
if: env.RELEASE_VERSION != ''
run: cd tests && sudo --preserve-env gradle test -Ddocker_image_tag=${{ env.IMAGE_NAME }}:${{ env.RELEASE_VERSION }}
env: # To allow downloading packages
GITHUB_USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# Docker Hub
- name: "Log into Docker Hub"
if: env.RELEASE_VERSION != ''
run: "echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login --username ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin"

- name: "Push to DockerHub"
if: env.RELEASE_VERSION != ''
run: "docker push $IMAGE_NAME:$RELEASE_VERSION && docker push $IMAGE_NAME:latest"

- name: "Update Docker Hub description"
if: env.RELEASE_VERSION != ''
uses: peter-evans/dockerhub-description@v2.4.3
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
DOCKERHUB_REPOSITORY: ${{ env.IMAGE_NAME }}

# GitHub Packages
- name: "Log into GitHub Packages"
if: env.RELEASE_VERSION != ''
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

- name: "Push to GitHub Packages"
if: env.RELEASE_VERSION != ''
run: "docker push ghcr.io/$IMAGE_NAME:$RELEASE_VERSION && docker push ghcr.io/$IMAGE_NAME:latest"
- uses: homecentr/action-build-docker-image@master
with:
imageName: "homecentr/mailrelay"
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
dockerHubUserName: ${{ secrets.DOCKERHUB_USERNAME }}
dockerHubPassword: ${{ secrets.DOCKERHUB_PASSWORD }}
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ gradle-app.setting
!gradle-wrapper.jar

# Cache of project
.gradletasknamecache
.gradletasknamecache

node_modules
8 changes: 0 additions & 8 deletions .releaserc

This file was deleted.

11 changes: 11 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/Thumbs.db": true,
"node_modules": true
}
}
20 changes: 19 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
FROM homecentr/base:3.1.1-alpine
FROM alpine:3.16

ARG MAILRELAY_VERSION="v1.04"

ADD https://github.com/wiggin77/mailrelay/releases/download/${MAILRELAY_VERSION}/mailrelay-linux-amd64 /usr/local/bin/mailrelay

RUN addgroup --gid 1000 nonroot && \
adduser -u 1000 -G nonroot -D -H -g "" nonroot && \
chmod a+x /usr/local/bin/mailrelay && \
apk add --no-cache \
ca-certificates=20211220-r0 \
libc6-compat=1.2.3-r0

USER 1000:1000

VOLUME [ "/config" ]

ENTRYPOINT [ "/usr/local/bin/mailrelay" ]
CMD [ "--config=/config/mailrelay.json" ]
37 changes: 9 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,26 @@
[![Project status](https://badgen.net/badge/project%20status/stable%20%26%20actively%20maintaned?color=green)](https://github.com/homecentr/docker-$$IMAGE_NAME$$/graphs/commit-activity) [![](https://badgen.net/github/label-issues/homecentr/docker-$$IMAGE_NAME$$/bug?label=open%20bugs&color=green)](https://github.com/homecentr/docker-$$IMAGE_NAME$$/labels/bug) [![](https://badgen.net/github/release/homecentr/docker-$$IMAGE_NAME$$)](https://hub.docker.com/repository/docker/homecentr/$$IMAGE_NAME$$)
[![](https://badgen.net/docker/pulls/homecentr/$$IMAGE_NAME$$)](https://hub.docker.com/repository/docker/homecentr/$$IMAGE_NAME$$)
[![](https://badgen.net/docker/size/homecentr/$$IMAGE_NAME$$)](https://hub.docker.com/repository/docker/homecentr/$$IMAGE_NAME$$)
[![Project status](https://badgen.net/badge/project%20status/stable%20%26%20actively%20maintaned?color=green)](https://github.com/homecentr/docker-mailrelay/graphs/commit-activity) [![](https://badgen.net/github/label-issues/homecentr/docker-mailrelay/bug?label=open%20bugs&color=green)](https://github.com/homecentr/docker-mailrelay/labels/bug) [![](https://badgen.net/github/release/homecentr/docker-mailrelay)](https://hub.docker.com/repository/docker/homecentr/mailrelay)
[![](https://badgen.net/docker/pulls/homecentr/mailrelay)](https://hub.docker.com/repository/docker/homecentr/mailrelay)
[![](https://badgen.net/docker/size/homecentr/mailrelay)](https://hub.docker.com/repository/docker/homecentr/mailrelay)

![CI/CD on master](https://github.com/homecentr/docker-$$IMAGE_NAME$$/workflows/CI/CD%20on%20master/badge.svg)
![CI/CD on master](https://github.com/homecentr/docker-mailrelay/workflows/CI/CD%20on%20master/badge.svg)


# Homecentr - $$IMAGE_NAME$$

## Usage

```yml
version: "3.7"
services:
$$IMAGE_NAME$$:
build: .
image: homecentr/$$IMAGE_NAME$$
```
## Environment variables
| Name | Default value | Description |
|------|---------------|-------------|
| PUID | 7077 | UID of the user $$IMAGE_NAME$$ should be running as. |
| PGID | 7077 | GID of the user $$IMAGE_NAME$$ should be running as. |
# Homecentr - mailrelay

## Exposed ports

| Port | Protocol | Description |
|------|------|-------------|
| 80 | TCP | Some useful details |
| ? (2525 is recommended, exact port is defined in the config file) | TCP | SMTP |

## Volumes

| Container path | Description |
|------------|---------------|
| /config | Some useful details |
| /config | The container expects config file at `/config/mailrelay.json` |

## Security
The container is regularly scanned for vulnerabilities and updated. Further info can be found in the [Security tab](https://github.com/homecentr/docker-$$IMAGE_NAME$$/security).
The container is regularly scanned for vulnerabilities and updated. Further info can be found in the [Security tab](https://github.com/homecentr/docker-mailrelay/security).

### Container user
The container supports privilege drop. Even though the container starts as root, it will use the permissions only to perform the initial set up. The $$IMAGE_NAME$$ process runs as UID/GID provided in the PUID and PGID environment variables.
:warning: Do not change the container user directly using the `user` Docker compose property or using the `--user` argument. This would break the privilege drop logic.
The container uses UID:GID of 1000:1000 by default. The UID:GID can be changed as needed.
28 changes: 24 additions & 4 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,26 @@
version: "3.7"
version: "3.9"
services:
$$IMAGE_NAME$$:
image:
build: .
image: homecentr/$$IMAGE_NAME$$
restart: unless-stopped
image: homecentr/mailrelay:preview
networks:
internal:
ports:
- "2525:2525"
volumes:
- "./example/mailrelay.json:/config/mailrelay.json:ro"
- "./example/smtp.crt:/etc/ssl/certs/ca-certificates.crt:ro"

smtp_mock:
image: kbedel/fake-smtp-server
command: node index.js --debug --keystore /keystore.pfx --passphrase Pass --smtpAuth some-user:some-password
ports:
- "1080:1080"
volumes:
- "./example/smtp.pfx:/keystore.pfx"
networks:
internal:

networks:
internal:
driver: bridge
13 changes: 13 additions & 0 deletions example/mailrelay.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"smtp_server": "smtp_mock",
"smtp_port": 1025,
"smtp_starttls": true,
"smtp_username": "some-user",
"smtp_password": "some-password",
"smtp_max_email_size": 10485760,
"smtp_login_auth_type": false,
"local_listen_ip": "0.0.0.0",
"local_listen_port": 2525,
"allowed_hosts": ["*"],
"timeout_secs": 30
}
29 changes: 29 additions & 0 deletions example/smtp.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIFCTCCAvGgAwIBAgIUT2BiO1mbquwP7tiSTo9ROa6BR0UwDQYJKoZIhvcNAQEL
BQAwFDESMBAGA1UEAwwJc210cF9tb2NrMB4XDTIyMDcyNzE1MjUxNFoXDTM4MTIz
MDE1MjUxNFowFDESMBAGA1UEAwwJc210cF9tb2NrMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEA4dO34rQPIbH1cfeQSuvwQytPAleFc87ThsEgTMLRY6/x
DQIWzrbLorJodmFUjc2UGFYGODbe9JvgxQwwbYfBFM8l7irp9CeEN0w11N8XFdHD
XNoiJrx0logohljSuE4/Ja8dBzDlisYBXJ3MnztzeZ8Xdue18qjGKR2U4SEdkBRv
HLoDzjcVEZ7+gtpXEbEyEcp2ekl6wHYU/Ks3UfgUEWWKTs5b72vA92Bc6ziys830
mmjO6wepDFtFNGnU66FMlHsVtM01znIOOI+QV5FAMMLaURjH4bZ1ir1ujodZlG5g
jdr/POaFcAp1ZK9yPJlwPP4yyj4PBIKmbWY8praYpzDdUGlxy/rY8OXzXxoFHP99
GWhIDALnxvOhFYiiiNl/6YoXjhM/e5JJrsya/bEGkN9S0rWZQH/J1NEf2SromenU
38bb13qJ+xXu8z6nBUF/nme7ch3hcaBkyMhd8Wv7ZFGqVWk94oPEpwFq3FKPxZL5
+jug1GGxbEDIGi+7s3ZyWlAYipqM0mqPYdYdPhmvYWg7Y6O6W+MurrPgktXQT/ko
whYiZS2C996lLhE9kzi8+wzT3HA7G5UwZSqUj3/WtgA/ZyMaBt+ihn/Hc4g7a4Zl
5ACZFU6ZWFNoJitDeKjyCnNAz8u7bBkcNrYfRFe3TFTgf5oaMHEsX/pKUEVwjGEC
AwEAAaNTMFEwHQYDVR0OBBYEFHZJNXIHVfxuhV5CTOvPg2UBAj1TMB8GA1UdIwQY
MBaAFHZJNXIHVfxuhV5CTOvPg2UBAj1TMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
hvcNAQELBQADggIBAFzgp7e1UbJcdV3mkMLIcx+zVl3VhM0iCdtjW6xKqmeQGw6K
cimvMaXrXYcL/f7ZfUr1nwN5SC6s7iZxyOyrcOOS6JMn2z8/U0x+/GNaFz54/9S1
0JO9opwZ4P9zkvxTNFNj3qbxAT591Xl729wEqYDGoW+vnzcFcmTROWdIHabAZ2v2
+QasZylbjcyIb6jfP2hmuWnCgxgyZQmK3LI3zJFqi0OEiwbW8Q9/pdvsfo0fXkpp
wBRLhdOGCudKIuTGJV7E+ARqYWPIOsGdO1L0KwPb31CsxC1MWOEpubEEYPfMoTt0
aNlB10Tj9sJIhVR/79CHE2z8DYOOFr1+/yUGAgQJsGcEVLsWaRTYGC9wL0g74iqD
fMRClg6UTLaf3r/0LAgYTionl3VgJedyi6kq99xzDyIH25CaeR7JIINHfS6makEA
XtwzIr0MSBdYOZMQQqpMs24vcKSHU85hGdplxmYHtiSaMJPISOrwdCkBb6h+Mmtx
jLsAUH/g6dPHieqAPIru4IdrV67c+YUaWKWuBiwuUThAgQ7HS2pYW93X5iY7Na8D
ICMYopnZ8l+77I8NptwNa7Uekni3BBtpQtXiImji/DtV/4hq1TEbmzpl7KbmsTiB
awgmX0sRyJhmey2AiFhTscaYhq7HFm5FpTWUeZSqnaXNHpKwZaEAIEUCgjpi
-----END CERTIFICATE-----
54 changes: 54 additions & 0 deletions example/smtp.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
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
9yvR7IgsTPpy7ie+mXBLX1TJTyYmvGfc
-----END ENCRYPTED PRIVATE KEY-----
Binary file added example/smtp.pfx
Binary file not shown.
Loading

0 comments on commit 7c854c1

Please sign in to comment.