simple mailserver config

This commit is contained in:
Rouven Seifert 2023-05-24 15:51:58 +02:00
parent e04491f9dd
commit 6972c8d5dd
Signed by: rouven.seifert
GPG key ID: B95E8FE6B11C4D09
5 changed files with 173 additions and 66 deletions

View file

@ -16,6 +16,38 @@
"type": "github" "type": "github"
} }
}, },
"blobs": {
"flake": false,
"locked": {
"lastModified": 1604995301,
"narHash": "sha256-wcLzgLec6SGJA8fx1OEN1yV/Py5b+U5iyYpksUY/yLw=",
"owner": "simple-nixos-mailserver",
"repo": "blobs",
"rev": "2cccdf1ca48316f2cfd1c9a0017e8de5a7156265",
"type": "gitlab"
},
"original": {
"owner": "simple-nixos-mailserver",
"repo": "blobs",
"type": "gitlab"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1668681692,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -43,11 +75,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1684844798, "lastModified": 1684919509,
"narHash": "sha256-ZrMXFoEA535jOZ+eDA3s+URZ5MkVRksBgL5qGnb6Ciw=", "narHash": "sha256-1HbQ4Y/DC59dFhUxBDV+tEzftlNvirHbIlg6axPusoo=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "eb1f832fcec5838053c6b031b656e4f949ada57b", "rev": "5bfd5a92404c9da08c187096d54c18274c737a00",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -133,11 +165,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1684169666, "lastModified": 1684899633,
"narHash": "sha256-N5jrykeSxLVgvm3Dd3hZ38/XwM/jU+dltqlXgrGlYxk=", "narHash": "sha256-NtwerXX8UFsoNy6k+DukJMriWtEjQtMU/Urbff2O2Dg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "71ce85372a614d418d5e303dd5702a79d1545c04", "rev": "4cc688ee711159b9bcb5a367be44007934e1a49d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -161,6 +193,21 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-22_11": {
"locked": {
"lastModified": 1669558522,
"narHash": "sha256-yqxn+wOiPqe6cxzOo4leeJOp1bXE/fjPEi/3F/bBHv8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ce5fe99df1f15a09a91a86be9738d68fadfbad82",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-22.11",
"type": "indirect"
}
},
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1680397293, "lastModified": 1680397293,
@ -237,10 +284,35 @@
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"purge": "purge", "purge": "purge",
"simple-nixos-mailserver": "simple-nixos-mailserver",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"trucksimulatorbot-images": "trucksimulatorbot-images" "trucksimulatorbot-images": "trucksimulatorbot-images"
} }
}, },
"simple-nixos-mailserver": {
"inputs": {
"blobs": "blobs",
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-22_11": "nixpkgs-22_11",
"utils": "utils"
},
"locked": {
"lastModified": 1684874496,
"narHash": "sha256-UinOcfH+PvkYsnpsty8uIUrag62Yre2jlBjP2h70dI8=",
"owner": "simple-nixos-mailserver",
"repo": "nixos-mailserver",
"rev": "d8131ffc61553df6137b382eec380689596cae3d",
"type": "gitlab"
},
"original": {
"owner": "simple-nixos-mailserver",
"repo": "nixos-mailserver",
"type": "gitlab"
}
},
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -281,6 +353,21 @@
"type": "github" "type": "github"
} }
}, },
"utils": {
"locked": {
"lastModified": 1605370193,
"narHash": "sha256-YyMTf3URDL/otKdKgtoMChu4vfVL3vCMkRqpGifhUn0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5021eac20303a61fafe17224c087f5519baed54d",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"wlroots": { "wlroots": {
"flake": false, "flake": false,
"locked": { "locked": {

View file

@ -31,6 +31,12 @@
url = "github:therealr5/trucksimulatorbot-images"; url = "github:therealr5/trucksimulatorbot-images";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
simple-nixos-mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = outputs =
@ -45,6 +51,7 @@
, nixos-hardware , nixos-hardware
, purge , purge
, trucksimulatorbot-images , trucksimulatorbot-images
, simple-nixos-mailserver
, ... , ...
}@attrs: { }@attrs: {
packages.x86_64-linux.iso = self.nixosConfigurations.iso.config.system.build.isoImage; packages.x86_64-linux.iso = self.nixosConfigurations.iso.config.system.build.isoImage;
@ -98,6 +105,7 @@
sops-nix.nixosModules.sops sops-nix.nixosModules.sops
purge.nixosModules.default purge.nixosModules.default
trucksimulatorbot-images.nixosModules.default trucksimulatorbot-images.nixosModules.default
simple-nixos-mailserver.nixosModules.default
]; ];
}; };
vm = nixpkgs.lib.nixosSystem { vm = nixpkgs.lib.nixosSystem {

View file

@ -38,6 +38,10 @@
htop-vim htop-vim
helix helix
]; ];
users.users.rouven = {
isNormalUser = true;
extraGroups = [ "wheel" ];
};
programs.git = { programs.git = {
enable = true; enable = true;
config = { config = {

View file

@ -0,0 +1,8 @@
{ ... }:
{
mailserver = {
enable = true;
fqdn = "mail.rfive.de";
domains = [ "rfive.de" ];
};
}

View file

@ -38,66 +38,66 @@ in
msmtp.enable = true; msmtp.enable = true;
}; };
accounts.email.accounts = { accounts.email.accounts = {
"rouven@rfive.de" = rec { # "rouven@rfive.de" = rec {
address = "rouven@rfive.de"; # address = "rouven@rfive.de";
gpg.key = gpg-default-key; # gpg.key = gpg-default-key;
realName = "Rouven Seifert"; # realName = "Rouven Seifert";
userName = address; # userName = address;
passwordCommand = "${pkgs.coreutils}/bin/cat $XDG_RUNTIME_DIR/secrets/email/rfive"; # passwordCommand = "${pkgs.coreutils}/bin/cat $XDG_RUNTIME_DIR/secrets/email/rfive";
imap = { # imap = {
host = "pro1.mail.ovh.net"; # host = "pro1.mail.ovh.net";
port = 993; # port = 993;
}; # };
smtp = { # smtp = {
host = "pro1.mail.ovh.net"; # host = "pro1.mail.ovh.net";
port = 587; # port = 587;
tls.useStartTls = true; # tls.useStartTls = true;
}; # };
msmtp.enable = true; # msmtp.enable = true;
mbsync = { # mbsync = {
enable = true; # enable = true;
create = "maildir"; # create = "maildir";
expunge = "both"; # expunge = "both";
groups.rfive = { # groups.rfive = {
channels.inbox = { # channels.inbox = {
nearPattern = "INBOX"; # nearPattern = "INBOX";
farPattern = "INBOX"; # farPattern = "INBOX";
extraConfig.Create = "near"; # extraConfig.Create = "near";
}; # };
channels.trash = { # channels.trash = {
nearPattern = "Trash"; # nearPattern = "Trash";
farPattern = "Gel&APY-schte Elemente"; # farPattern = "Gel&APY-schte Elemente";
extraConfig.Create = "near"; # extraConfig.Create = "near";
}; # };
channels.sent = { # channels.sent = {
nearPattern = "Sent"; # nearPattern = "Sent";
farPattern = "Gesendete Elemente"; # farPattern = "Gesendete Elemente";
extraConfig.Create = "near"; # extraConfig.Create = "near";
}; # };
channels.junk = { # channels.junk = {
nearPattern = "Junk"; # nearPattern = "Junk";
farPattern = "Junk-E-Mail"; # farPattern = "Junk-E-Mail";
extraConfig.Create = "near"; # extraConfig.Create = "near";
}; # };
channels.drafts = { # channels.drafts = {
nearPattern = "Drafts"; # nearPattern = "Drafts";
farPattern = "Entw&APw-rfe"; # farPattern = "Entw&APw-rfe";
extraConfig.Create = "near"; # extraConfig.Create = "near";
}; # };
}; # };
extraConfig = { # extraConfig = {
account = { # account = {
AuthMechs = "Login"; # AuthMechs = "Login";
}; # };
}; # };
}; # };
neomutt = let c = mbsync.groups.rfive.channels; in # neomutt = let c = mbsync.groups.rfive.channels; in
{ # {
enable = true; # enable = true;
mailboxName = " 󰒋 rfive.de"; # mailboxName = " 󰒋 rfive.de";
extraMailboxes = lib.lists.forEach [ c.sent c.trash c.junk c.drafts ] (x: x.nearPattern); # extraMailboxes = lib.lists.forEach [ c.sent c.trash c.junk c.drafts ] (x: x.nearPattern);
}; # };
}; # };
"TU-Dresden" = rec { "TU-Dresden" = rec {
address = "rouven.seifert@mailbox.tu-dresden.de"; address = "rouven.seifert@mailbox.tu-dresden.de";
gpg.key = gpg-default-key; gpg.key = gpg-default-key;