25 Commits

Author SHA1 Message Date
0f84feeb5f fix: getHostname error in docker-compose
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-14 20:02:15 +02:00
4ec1a2311b chore(deps): update dependency docker.io/library/alpine to v3.16.0 2022-07-14 20:02:15 +02:00
16f30737f2 fix(ci): resource limits
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2022-05-22 13:10:28 +02:00
c33ffca552 fix(ci): use fully qualified image name
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-22 13:02:39 +02:00
25b57f99be fix(ci): use gitea to sync repo with github
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-03 17:48:47 +02:00
163eb5c4ea Merge pull request 'chore(deps): update dependency docker.io/library/alpine to v3.15.4' (#6) from renovate/docker.io-library-alpine-3.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #6
2022-04-15 21:27:53 +00:00
0cb5db3c50 chore(deps): update dependency docker.io/library/alpine to v3.15.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-04-05 02:04:19 +02:00
c37d202e25 Merge pull request 'chore(deps): update dependency docker.io/library/alpine to v3.15.3' (#5) from renovate/docker.io-library-alpine-3.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5
2022-04-01 19:00:14 +00:00
5acd0eb4df chore(deps): update dependency docker.io/library/alpine to v3.15.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-03-29 09:02:29 +02:00
7f72f0349a Merge pull request 'chore(deps): update dependency docker.io/library/alpine to v3.15.1' (#4) from renovate/docker.io-library-alpine-3.x into master
Reviewed-on: #4
2022-03-17 17:58:22 +00:00
f66d5d0327 chore(deps): update dependency docker.io/library/alpine to v3.15.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-03-17 04:02:37 +01:00
4afa9a27ed chore(deps): update docker.io/volkerraschek/markdownlint docker tag to v0.31.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-02-09 19:33:26 +00:00
906f520730 fix(ci): add package rules
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-30 18:21:16 +01:00
c1736289c5 Merge pull request 'chore(deps): update docker.io/volkerraschek/markdownlint docker tag to v0.30.0' (#2) from renovate/docker.io-volkerraschek-markdownlint-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #2
2022-01-25 21:18:30 +00:00
eea2724aea chore(deps): update docker.io/volkerraschek/markdownlint docker tag to v0.30.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-01-25 21:01:53 +00:00
3fdf46a523 chore(deps): update docker.io/library/alpine docker tag to v3.15.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-01-25 20:39:56 +00:00
dd3c1184d6 fix(ci): build armv7 and aarch64 images
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-25 21:32:31 +01:00
c0a6f5c8f5 fix: add renovate config
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-22 00:02:23 +01:00
b5692c03d9 fix: database port
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-21 23:32:09 +01:00
fe8bf5d73c fix(Makefile): use official container image name 2022-01-21 23:31:15 +01:00
feee56b98c fix(Dockerfile): upgrade packages 2022-01-21 23:30:45 +01:00
d6536071ef fix: log to stdout 2022-01-21 23:30:28 +01:00
66a537767f fix(ci): dependencies and conditions
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-12 21:59:55 +02:00
0de75ab85d doc(README): image name
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-26 21:00:12 +02:00
4b81be1cb6 doc(README): badges
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-26 20:59:10 +02:00
8 changed files with 394 additions and 103 deletions

View File

@ -5,17 +5,16 @@ name: linter
platform:
os: linux
arch: amd64
steps:
- name: markdown lint
commands:
- markdownlint *.md
image: docker.io/volkerraschek/markdownlint:0.28.1
image: docker.io/volkerraschek/markdownlint:0.31.1
resources:
limits:
cpu: 50
memory: 50M
cpu: 150
memory: 150M
- name: email-notification
environment:
@ -30,8 +29,8 @@ steps:
image: docker.io/drillster/drone-email:latest
resources:
limits:
cpu: 50
memory: 25M
cpu: 150
memory: 150M
when:
status:
- changed
@ -41,6 +40,190 @@ trigger:
event:
exclude:
- tag
---
kind: pipeline
type: docker
name: dry-run-amd64
platform:
os: linux
arch: amd64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
dockerfile: Dockerfile
auto_tag: false
dry_run: true
tags: latest-amd64
repo: volkerraschek/postfixadmin-fetchmail
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
no_cache: true
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: notify
image: docker.io/drillster/drone-email:latest
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
exclude:
- master
event:
- pull_request
- push
repo:
- volker.raschek/postfixadmin-fetchmail-docker
---
kind: pipeline
type: docker
name: dry-run-arm-v7
platform:
os: linux
arch: arm
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
dockerfile: Dockerfile
auto_tag: false
dry_run: true
tags: latest-arm-v7
repo: volkerraschek/postfixadmin-fetchmail
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
no_cache: true
- name: notify
image: docker.io/drillster/drone-email:latest
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
volumes:
- name: docker_socket
path: /var/run/docker.sock
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
exclude:
- master
event:
- pull_request
- push
repo:
- volker.raschek/postfixadmin-fetchmail-docker
---
kind: pipeline
type: docker
name: dry-run-arm64-v8
platform:
os: linux
arch: arm64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
dockerfile: Dockerfile
auto_tag: false
dry_run: true
tags: latest-arm64-v8
repo: volkerraschek/postfixadmin-fetchmail
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
no_cache: true
- name: notify
image: docker.io/drillster/drone-email:latest
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
volumes:
- name: docker_socket
path: /var/run/docker.sock
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
exclude:
- master
event:
- pull_request
- push
repo:
- volker.raschek/postfixadmin-fetchmail-docker
---
kind: pipeline
type: docker
@ -52,7 +235,7 @@ platform:
steps:
- name: build
image: plugins/docker
image: docker.io/plugins/docker:latest
settings:
dockerfile: Dockerfile
auto_tag: false
@ -66,12 +249,9 @@ steps:
volumes:
- name: docker_socket
path: /var/run/docker.sock
when:
branch:
- master
- name: notify
image: drillster/drone-email
image: docker.io/drillster/drone-email:latest
environment:
PLUGIN_HOST:
from_secret: smtp_host
@ -91,15 +271,22 @@ volumes:
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
- master
event:
exclude:
- tag
- cron
- push
repo:
- volker.raschek/postfixadmin-fetchmail-docker
---
kind: pipeline
type: docker
name: latest-armv7
name: latest-arm-v7
platform:
os: linux
@ -107,23 +294,20 @@ platform:
steps:
- name: build
image: plugins/docker
image: docker.io/plugins/docker:latest
settings:
dockerfile: Dockerfile
auto_tag: false
tags: latest-armv7
tags: latest-arm-v7
repo: volkerraschek/postfixadmin-fetchmail
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
no_cache: true
when:
branch:
- master
- name: notify
image: drillster/drone-email
image: docker.io/drillster/drone-email:latest
environment:
PLUGIN_HOST:
from_secret: smtp_host
@ -146,10 +330,76 @@ volumes:
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
- master
event:
exclude:
- tag
- cron
- push
repo:
- volker.raschek/postfixadmin-fetchmail-docker
---
kind: pipeline
type: docker
name: latest-arm64-v8
platform:
os: linux
arch: arm64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
dockerfile: Dockerfile
auto_tag: false
tags: latest-arm64-v8
repo: volkerraschek/postfixadmin-fetchmail
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
no_cache: true
- name: notify
image: docker.io/drillster/drone-email:latest
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
volumes:
- name: docker_socket
path: /var/run/docker.sock
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
- master
event:
- cron
- push
repo:
- volker.raschek/postfixadmin-fetchmail-docker
---
kind: pipeline
@ -158,7 +408,7 @@ name: latest-manifest
steps:
- name: build-manifest
image: plugins/manifest
image: docker.io/plugins/manifest:latest
settings:
auto_tag: false
ignore_missing: true
@ -181,8 +431,8 @@ steps:
from_secret: smtp_mail_address
resources:
limits:
cpu: 50
memory: 25M
cpu: 150
memory: 150M
when:
status:
- changed
@ -190,12 +440,17 @@ steps:
depends_on:
- latest-amd64
- latest-armv7
- latest-arm-v7
- latest-arm64-v8
trigger:
branch:
- master
event:
exclude:
- tag
- cron
- push
repo:
- volker.raschek/postfixadmin-fetchmail-docker
---
kind: pipeline
@ -208,7 +463,7 @@ platform:
steps:
- name: build
image: plugins/docker
image: docker.io/plugins/docker:latest
settings:
dockerfile: Dockerfile
auto_tag: true
@ -224,7 +479,7 @@ steps:
path: /var/run/docker.sock
- name: notify
image: drillster/drone-email
image: docker.io/drillster/drone-email:latest
environment:
PLUGIN_HOST:
from_secret: smtp_host
@ -253,7 +508,7 @@ trigger:
---
kind: pipeline
type: docker
name: tagged-armv7
name: tagged-arm-v7
platform:
os: linux
@ -261,11 +516,11 @@ platform:
steps:
- name: build
image: plugins/docker
image: docker.io/plugins/docker:latest
settings:
dockerfile: Dockerfile
auto_tag: true
auto_tag_suffix: armv7
auto_tag_suffix: arm-v7
repo: volkerraschek/postfixadmin-fetchmail
username:
from_secret: container_image_registry_user
@ -277,7 +532,60 @@ steps:
path: /var/run/docker.sock
- name: notify
image: drillster/drone-email
image: docker.io/drillster/drone-email:latest
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
trigger:
event:
- tag
repo:
- volker.raschek/postfixadmin-fetchmail-docker
---
kind: pipeline
type: docker
name: tagged-arm64-v8
platform:
os: linux
arch: arm64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
dockerfile: Dockerfile
auto_tag: true
auto_tag_suffix: arm64-v8
repo: volkerraschek/postfixadmin-fetchmail
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
no_cache: true
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: notify
image: docker.io/drillster/drone-email:latest
environment:
PLUGIN_HOST:
from_secret: smtp_host
@ -310,7 +618,7 @@ name: tagged-manifest
steps:
- name: build-manifest
image: plugins/manifest
image: docker.io/plugins/manifest:latest
settings:
auto_tag: true
ignore_missing: true
@ -333,8 +641,8 @@ steps:
from_secret: smtp_mail_address
resources:
limits:
cpu: 50
memory: 25M
cpu: 150
memory: 150M
when:
status:
- changed
@ -342,59 +650,11 @@ steps:
depends_on:
- tagged-amd64
- tagged-armv7
- tagged-arm-v7
- tagged-arm64-v8
trigger:
event:
- tag
repo:
- volker.raschek/postfixadmin-fetchmail-docker
---
kind: pipeline
type: kubernetes
name: sync
platform:
os: linux
arch: amd64
steps:
- name: github
image: docker.io/appleboy/drone-git-push:latest
resources:
limits:
cpu: 50
memory: 25M
settings:
branch: master
remote: ssh://git@github.com/volker-raschek/fetchmail-docker.git
force: true
ssh_key:
from_secret: ssh_key
- name: email-notification
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
image: docker.io/drillster/drone-email:latest
resources:
limits:
cpu: 50
memory: 25M
when:
status:
- changed
- failure
trigger:
event:
- push
repo:
- volker.raschek/postfixadmin-fetchmail-docker

View File

@ -1,6 +1,7 @@
FROM docker.io/library/alpine:3.11.2
FROM docker.io/library/alpine:3.16.0
RUN echo "http://dl-3.alpinelinux.org/alpine/edge/testing/" >> /etc/apk/repositories
RUN apk upgrade
RUN apk add --update perl perl-lockfile-simple perl-dbi perl-dbd-pg perl-dbd-mysql fetchmail
RUN mkdir --parents /run/fetchmail

View File

@ -9,7 +9,7 @@ FETCHMAIL_IMAGE_REGISTRY_NAME:=docker.io
FETCHMAIL_IMAGE_REGISTRY_USER:=volkerraschek
FETCHMAIL_IMAGE_NAMESPACE?=${FETCHMAIL_IMAGE_REGISTRY_USER}
FETCHMAIL_IMAGE_NAME:=fetchmail
FETCHMAIL_IMAGE_NAME:=postfixadmin-fetchmail
FETCHMAIL_IMAGE_VERSION?=latest
FETCHMAIL_IMAGE_FULLY_QUALIFIED=${FETCHMAIL_IMAGE_REGISTRY_NAME}/${FETCHMAIL_IMAGE_NAMESPACE}/${FETCHMAIL_IMAGE_NAME}:${FETCHMAIL_IMAGE_VERSION}
FETCHMAIL_IMAGE_UNQUALIFIED=${FETCHMAIL_IMAGE_NAMESPACE}/${FETCHMAIL_IMAGE_NAME}:${FETCHMAIL_IMAGE_VERSION}

View File

@ -1,11 +1,12 @@
# PostfixAdmin's fetchmail
[![Build Status](https://drone.cryptic.systems/api/badges/volker.raschek/fetchmail-docker/status.svg)](https://drone.cryptic.systems/volker.raschek/fetchmail-docker)
[![Docker Pulls](https://img.shields.io/docker/pulls/volkerraschek/fetchmail)](https://hub.docker.com/r/volkerraschek/fetchmail)
[![Build Status](https://drone.cryptic.systems/api/badges/volker.raschek/postfixadmin-fetchmail-docker/status.svg)](https://drone.cryptic.systems/volker.raschek/postfixadmin-fetchmail-docker)
[![Docker Pulls](https://img.shields.io/docker/pulls/volkerraschek/postfixadmin-fetchmail)](https://hub.docker.com/r/volkerraschek/postfixadmin-fetchmail)
This project contains all sources to build the container image
`docker.io/volkerraschek/fetchmail`. The primary goal of the image is to fetch
mails from external servers and forward them to on local running mail server.
`docker.io/volkerraschek/postfixadmin-fetchmail`. The primary goal of the image
is to fetch mails from external servers and forward them to on local running
mail server.
The configuration file will be automatically generated based on information from
a supported database backend of

View File

@ -1,12 +1,14 @@
version: "3"
services:
fetchmail:
container_name: fetchmail
image: volkerraschek/fetchmail-docker:latest
postfixadmin-fetchmail:
container_name: postfixadmin-fetchmail
image: docker.io/volkerraschek/postfixadmin-fetchmail:latest
environment:
- DATABASE_TYPE=${DATABASE_TYPE}
- DATABASE_HOST=${DATABASE_HOST}
- DATABASE_NAME=${DATABASE_NAME}
- DATABASE_USER=${DATABASE_USER}
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
- DATABASE_HOST=${DATABASE_HOST}
- DATABASE_PORT=${DATABASE_PORT}
- DATABASE_NAME=${DATABASE_NAME}
network_mode: host
privileged: true

View File

@ -35,7 +35,7 @@ openlog("fetchmail-all", "pid", "mail");
sub log_and_die {
my($message) = @_;
syslog("err", $message);
printf "err: %s\n", $message;
die $message;
}
@ -90,7 +90,7 @@ my (%config);
map{
my ($id,$mailbox,$src_server,$src_auth,$src_user,$src_password,$src_folder,$fetchall,$keep,$protocol,$mda,$extra_options,$usessl,$sslcertck,$sslcertpath,$sslfingerprint)=@$_;
syslog("info","fetch ${src_user}@${src_server} for ${mailbox}");
printf "info: fetch %s@%s for %s\n", ${src_user}, ${src_server}, ${mailbox};
$cmd="user '${src_user}' there with password '".decode_base64($src_password)."'";
$cmd.=" folder '${src_folder}'" if ($src_folder);
@ -112,7 +112,8 @@ set postmaster "postmaster"
set nobouncemail
set no spambounce
set properties ""
set syslog
set no syslog
set logfile /dev/stdout
poll ${src_server} with proto ${protocol}
$cmd
@ -129,6 +130,9 @@ TXT
$sql="UPDATE fetchmail SET returned_text=".$dbh->quote($ret).", date=now() WHERE id=".$id;
$dbh->do($sql);
printf "info: fetched mails of %s@%s for %s\n", ${src_user}, ${src_server}, ${mailbox};
}@{$dbh->selectall_arrayref($sql)};
$lockmgr->unlock($lock_file);

View File

@ -13,8 +13,14 @@ manifests:
architecture: amd64
os: linux
-
image: volkerraschek/postfixadmin-fetchmail:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-armv7
image: volkerraschek/postfixadmin-fetchmail:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-arm-v7
platform:
architecture: arm
os: linux
variant: v7
-
image: volkerraschek/postfixadmin-fetchmail:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-arm64-v8
platform:
architecture: arm64
os: linux
variant: v8

17
renovate.json Normal file
View File

@ -0,0 +1,17 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"assignees": [ "volker.raschek" ],
"automergeStrategy": "merge-commit",
"automergeType": "pr",
"labels": [ "renovate" ],
"packageRules": [
{
"addLabels": [ "renovate/droneci", "renovate/automerge" ],
"automerge": true,
"matchManagers": "droneci",
"matchUpdateTypes": [ "minor", "patch"]
}
],
"rebaseLabel": "renovate/rebase",
"rebaseWhen": "behind-base-branch"
}