No description
Find a file
2025-08-18 16:17:35 +02:00
config.yml.example update vm file, fix README, add working dir in module 2025-08-18 16:17:35 +02:00
flake.lock initial commit 2025-08-08 14:59:08 +02:00
flake.nix initial commit 2025-08-08 14:59:08 +02:00
mail-quota-warning.py reformat, fix load env vars, update README 2025-08-18 16:00:51 +02:00
module.nix update vm file, fix README, add working dir in module 2025-08-18 16:17:35 +02:00
README.md update vm file, fix README, add working dir in module 2025-08-18 16:17:35 +02:00
vm-mail-quota-warning.py update vm file, fix README, add working dir in module 2025-08-18 16:17:35 +02:00

mail-quota-warning

Small script to check a configured list of IMAP accounts for mailbox quota and send a warning mail in case a specific threashold is exceeded.

Installation

NixOS

Add the module to your flake.nix:

{
  inputs = {
    mail-quota-warning.url = "git+https://git.project-insanity.org/onny/mail-quota-warning.git";
    [...]
  };

  outputs = {self, nixpkgs, ...}@inputs: {

    nixosConfigurations.tuxzentrale = inputs.nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs.inputs = inputs;
      modules = [
        inputs.mail-quota-warning.nixosModule

        ({ pkgs, ... }:{

          nixpkgs.overlays = [
            inputs.mail-quota-warning.overlay
          ];

        })

        ./configuration.nix

      ];
    };
  };
}

Add this to your configuration.nix file

environment.etc."mail-quota-warning-secrets.yml".text = ''
accounts:
  - name: Sales
    imap_server: mail.example.com
    imap_port: 993
    username: sales@example.com
    password: secret

  - name: Support
    imap_server: mail.example.com
    imap_port: 993
    username: support@example.com
    password: secret

mail:
  smtp_server: mail.example.com
  smtp_port: 587
  smtp_username: monitoring@example.com
  smtp_password: secret
  from_address: monitoring@example.com
  recipients:
    - admin1@example.com
    - admin2@example.com
'';

services.mail-quota-warning = {
  enable = true;
  settings = {
    CHECK_INTERVAL_DAYS = 7;
    QUOTA_WARNING_THRESHOLD_PERCENT = 80;    
  };
  secrets = [ /etc/mail-quota-warning-secrets.yml ];
};

Replace setting variables according to your setup.

From source

cd mail-quota-warning
nix develop
export CHECK_INTERVAL_DAYS=7
export QUOTA_WARNING_THRESHOLD_PERCENT=80
nix run