6 Commits

Author SHA1 Message Date
Mauro Torrez
aa35e8568a Imagen intermedia para migracion de v4 a v5 (trixie) 2026-01-22 13:36:43 -03:00
Mauro Torrez
82e5e1bff1 Upgrade to bookworm, v4
All checks were successful
Build Docker images / docker (eumau/dovecot, 4) (push) Successful in 4m50s
2024-03-01 22:39:47 -03:00
Mauro Torrez
fefee26114 better ci
All checks were successful
Build Docker images / docker (eumau/dovecot, 3) (push) Successful in 5m21s
2024-02-27 14:31:55 -03:00
Mauro Torrez
1f267a1aa4 rm drone ci
All checks were successful
Build Docker images / docker (3) (push) Successful in 4m53s
2024-02-27 13:24:21 -03:00
Mauro Torrez
8e3ddfa237 Add gitea CI 2024-02-27 13:23:24 -03:00
Mauro Torrez
258b4a81a8 Add managesieve support
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-08-11 01:44:21 -03:00
9 changed files with 87 additions and 62 deletions

View File

@@ -1,53 +0,0 @@
---
kind: pipeline
name: default
steps:
- name: build and publish image
image: plugins/docker
settings:
repo: eumau/dovecot
auto_tag: true
username:
from_secret: dockerhub_username
password:
from_secret: dockerhub_password
when:
branch:
- master
---
kind: pipeline
name: pull_request
steps:
- name: build image only
image: plugins/docker
settings:
repo: eumau/dovecot
auto_tag: true
dry_run: true
trigger:
event:
- pull_request
---
kind: pipeline
name: tags
steps:
- name: docker
image: plugins/docker
settings:
repo: eumau/dovecot
username:
from_secret: dockerhub_username
password:
from_secret: dockerhub_password
tags:
- ${DRONE_TAG}
trigger:
event:
- tag

View File

@@ -0,0 +1,38 @@
name: Build Docker images
on:
push:
branches:
- main
workflow_dispatch:
jobs:
docker:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
repo:
- "eumau/dovecot"
tag:
- "4-to-5"
steps:
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push image
uses: docker/build-push-action@v5
with:
push: true
tags: ${{ matrix.repo }}:${{ matrix.tag }}
platforms: linux/amd64,linux/arm64

View File

@@ -1,7 +1,7 @@
##
## Mailbox locations and namespaces
##
mail_location = mdbox:~/dbox
mail_location = Maildir:~/maildir
mail_attribute_dict = file:~/dovecot-attributes
namespace inbox {
@@ -287,7 +287,7 @@ mailbox_list_index = yes
# this for now.
# Directory root where to store mail attachments. Disabled, if empty.
mail_attachment_dir = /vmail/attachments
mail_attachment_dir =
# Attachments smaller than this aren't saved externally. It's also possible to
# write a plugin to disable saving specific attachments externally.
@@ -297,7 +297,7 @@ mail_attachment_min_size = 64k
# posix : No SiS done by Dovecot (but this might help FS's own deduplication)
# sis posix : SiS with immediate byte-by-byte comparison during saving
# sis-queue posix : SiS with delayed comparison and deduplication
mail_attachment_fs = sis-queue /vmail/attachments-queue:posix
mail_attachment_fs =
# Hash format to use in attachment filenames. You can add any text and
# variables: %{md4}, %{md5}, %{sha1}, %{sha256}, %{sha512}, %{size}.

View File

@@ -1,4 +1,4 @@
FROM eumau/debian:bullseye-slim
FROM eumau/debian:bookworm-slim
LABEL maintainer "Mauro Torrez <mauro@mau.ro>"
ARG DEBIAN_FRONTEND=noninteractive
ENV LC_ALL C
@@ -54,12 +54,13 @@ ENV \
LDAP_USER_FILTER="(&(objectClass=inetOrgPerson)(uid=%n))" \
LDAP_PASS_ATTRS="userPassword=password, =userdb_home=/vmail/mail/%d/%n, =userdb_uid=5000, =userdb_gid=5000" \
LDAP_PASS_FILTER="(&(objectClass=inetOrgPerson)(uid=%n))" \
LDAP_ITERATE_ATTRS="=user=%{ldap:uid}@%d" \
LDAP_ITERATE_ATTRS="=user=%{ldap:mail}" \
LDAP_ITERATE_FILTER="(objectClass=inetOrgPerson)" \
LDAP_DEFAULT_PASS_SCHEME=CRYPT \
SINGLE_USER= \
ANTISPAM_ENABLE=yes \
SIEVE_ENABLE=yes \
MANAGESIEVE_ENABLE=yes \
IMAP_URLAUTH_HOST="*" \
SSL_CLIENT_CA_DIR="/etc/ssl/certs" \
SSL_CLIENT_CA_FILE= \
@@ -72,5 +73,5 @@ ADD junk-filter.sieve /etc/dovecot/sieve/before/
ADD sievec /start.d/
VOLUME ["/ssl","/vmail"]
EXPOSE 110/tcp 143/tcp 587/tcp 993/tcp 995/tcp 2000/tcp
EXPOSE 110/tcp 143/tcp 587/tcp 993/tcp 995/tcp 4190/tcp
CMD ["dovecot","-F"]

View File

@@ -161,3 +161,18 @@ dovecot_antispam_pipe_program_notspam_arg: learn_ham
alternativa de correo.
* `dovecot_altstorage_directory` (`{{ vmail_home }}/alt-storage`):
carpeta alternativa de correo.
## Migracion de mdbox a maildir
Decidí migrar porque el sis storage está deprecado. Adicionalmente al intentar sincronizar / hacer backup de la mdbox aparecen errores de integridad, seguramente por este storage
```
docker compose stop dovecot
docker run --rm -ti -v mail_mail:/vmail eumau/dovecot:4 bash
doveadm backup -f -u mauro@mau.ro Maildir:~/maildir
### repetir para todos los usuarios
exit
### Actualizar imagen a 4-to-5
docker compose up -d
### Ahora ya deberíamos tener maildir sin attachments externos
```

View File

@@ -0,0 +1,6 @@
[template]
src = "20-managesieve.conf.tmpl"
dest = "/etc/dovecot/local.d/20-managesieve.conf"
keys = [
"/managesieve/enable",
]

View File

@@ -0,0 +1,14 @@
# enable managesieve protocol
protocols = $protocols {{ if eq (getv "/managesieve/enable") "yes" }}sieve{{ end }}
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
service managesieve {
}
protocol sieve {
}

View File

@@ -1,10 +1,12 @@
plugin {
sieve_plugins = {{ if eq (getv "/sieve/enable") "yes" }}sieve_imapsieve{{ if eq (getv "/antispam/enable") "yes" }} sieve_extprograms{{ end }}{{ end }}
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_before = /etc/dovecot/sieve/before
sieve_after = /etc/dovecot/sieve/after
{{ if eq (getv "/antispam/enable") "yes" }}
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
sieve_pipe_bin_dir = /etc/dovecot/sieve

View File

@@ -3,11 +3,13 @@
# arg 1 - spam or ham
if [ "$1" == "ham" ]; then
/usr/bin/bogofilter -d /vmail/bogofilter -e -p -Sn
/usr/bin/bogofilter -d /vmail/bogofilter -p -Sn
exit 0
fi
if [ "$1" == "spam" ]; then
/usr/bin/bogofilter -d /vmail/bogofilter -e -p -Ns
/usr/bin/bogofilter -d /vmail/bogofilter -p -Ns
exit 0
fi
exit 1