Projekt

Allgemein

Profil

MailCow » Historie » Revision 6

Revision 5 (Jeremias Keihsler, 16.10.2023 08:27) → Revision 6/7 (Jeremias Keihsler, 11.06.2024 08:39)

h1. MailCow 

 h2. Backup-Mailserver 

 interesting article covering that topic 
 https://autoize.com/backup-mx-configuration-for-mailcow/ 

 h3. Backup 

 taken from https://mailcow.github.io/mailcow-dockerized-docs/b_n_r_backup/ 

 create backup-target-location 

 <pre><code class="shell"> 
 mkdir /mnt/mailcow_backups 
 </code></pre> 

 create daily-backup-script @/etc/cron.daily/mailcow_backup.sh@ 
 <pre><code class="shell"> 
 #!/bin/sh 

 # Backup mailcow data 
 # https://mailcow.github.io/mailcow-dockerized-docs/b_n_r_backup/ 

 set -e 

 OUT="$(mktemp)" 
 export MAILCOW_BACKUP_LOCATION="/mnt/mailcow_backups" 
 SCRIPT="/opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh" 
 PARAMETERS="backup all" 
 OPTIONS="--delete-days 30" 

 # run command 
 set +e 
 "${SCRIPT}" ${PARAMETERS} ${OPTIONS} 2>&1 > "$OUT" 
 RESULT=$? 

 if [ $RESULT -ne 0 ] 
     then 
             echo "${SCRIPT} ${PARAMETERS} ${OPTIONS} encounters an error:" 
             echo "RESULT=$RESULT" 
             echo "STDOUT / STDERR:" 
             cat "$OUT" 
 fi 
 </code></pre> 

 h2. automatically delete mails older than in any given mailbox/folder 

 <pre><code class="shell"> 
 vim /usr/local/bin/tidyup_mailbox.sh 
 </code></pre> 

 <pre><code class="shell"> 
 #!/bin/bash 

 # JKE 2023-10-16 
 # path to mailcow-dockerized 
 cd /opt/mailcow-dockerized 

 sudo docker compose exec dovecot-mailcow doveadm expunge -u 'user@example.com' mailbox 'FromServerMail' before 2w 
 sudo docker compose exec dovecot-mailcow doveadm expunge -u 'user@example.com' mailbox 'FromServerMail/Crond' before 6w 
 sudo docker compose exec dovecot-mailcow doveadm expunge -u 'user@example.com' mailbox 'FromServerMail/Fail2Ban_2' before 5d 
 sudo docker compose exec dovecot-mailcow doveadm expunge -u 'user@example.com' mailbox 'FromServerMail/Logwatch' before 2w 
 sudo docker compose exec dovecot-mailcow doveadm expunge -u 'user@example.com' mailbox 'FromServerMail/ztrash' before 1w 
 </code></pre> 

 add this to cron 

 <pre><code class="shell"> 
 vim /etc/cron.d/tidyup_mailbox 
 </code></pre> 

 <pre><code class="shell"> 
 # JKE 2023-10-16 
 # 
 #      min    hr     dom    month dow      user      command 
 #      -      -      -      -       - 
 #      |      |      |      |       | 
 #      |      |      |      |       +-day of week (0-7) sunday=0 or 7 
 #      |      |      |      +---------month (1-12) 
 #      |      |      +----------------day of month (1-31) 
 #      |      +-----------------------hour (0-23) 
 #      +------------------------------min (0-59) 
 # 
      57     23     *      *       *      root      /usr/local/bin/tidyup_mailbox.sh 
 </code></pre> 

 h2. Debug 

 h3. logs 

 in-memory logs are sometimes not enough ... 
 find @mailcow.conf@, start in it's directory 

 <pre><code class="shell"> 
 docker compose logs 
 </code></pre> 

 h3. statistics with pflogsumm 

 taken from https://docs.mailcow.email/manual-guides/Postfix/u_e-postfix-pflogsumm/ 

 <pre><code class="shell"> 
 docker logs --since 24h $(docker ps -qf name=postfix-mailcow) | pflogsumm 
 </code></pre> 

 <pre><code class="shell"> 
 # JKE 2024-06-11 
 # 
 #      min    hr     dom    month dow      user      command 
 #      -      -      -      -       - 
 #      |      |      |      |       | 
 #      |      |      |      |       +-day of week (0-7) sunday=0 or 7 
 #      |      |      |      +---------month (1-12) 
 #      |      |      +----------------day of month (1-31) 
 #      |      +-----------------------hour (0-23) 
 #      +------------------------------min (0-59) 
 # 
      59     23     *      *       *      root      docker logs --since 24h $(docker ps -qf name=postfix-mailcow) | /usr/sbin/pflogsumm -d today | mail -s "Postfix Report of $(date)" postmaster@example.com 
 </code></pre>