summaryrefslogtreecommitdiff
path: root/hosts/cloud/sortug/mail.nix
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2024-09-07 00:23:55 +0700
committerpolwex <polwex@sortug.com>2024-09-07 00:23:55 +0700
commit479d74e5146a601c2244153e8aa89e723b30cbe5 (patch)
treeab4df0c3c3a39821825feb7447f084765d53c1b8 /hosts/cloud/sortug/mail.nix
parent6a7fa5ae7c243b3dd1f0d5a4221c3b69a4bdbab7 (diff)
m
Diffstat (limited to 'hosts/cloud/sortug/mail.nix')
-rw-r--r--hosts/cloud/sortug/mail.nix77
1 files changed, 77 insertions, 0 deletions
diff --git a/hosts/cloud/sortug/mail.nix b/hosts/cloud/sortug/mail.nix
new file mode 100644
index 0000000..ef10866
--- /dev/null
+++ b/hosts/cloud/sortug/mail.nix
@@ -0,0 +1,77 @@
+{
+ config,
+ pkgs,
+ ...
+}: {
+ # services.dovecot2.sieve.extensions = ["fileinto"];
+ mailserver = {
+ enable = true;
+ fqdn = "mail.sortug.com";
+ domains = ["sortug.com" "yago.onl"];
+ # workaround
+ # A list of all login accounts. To create the password hashes, use
+ # nix-shell -p mkpasswd --run 'mkpasswd -sm bcrypt'
+ loginAccounts = {
+ "zh@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "jp@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "th@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "bd@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "info@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "admin@sortug.com" = {
+ # legal and banking
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "internal@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "billing@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "polwex@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "kinode@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "hosting@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "support@sortug.com" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ "sub@yago.onl" = {
+ hashedPasswordFile = "/home/y/mail.key";
+ };
+ };
+
+ # Use Let's Encrypt certificates. Note that this needs to set up a stripped
+ # down nginx and opens port 80.
+ certificateScheme = "acme-nginx";
+ };
+ security.acme.acceptTerms = true;
+ security.acme.defaults.email = "security@sortug.com";
+ services.roundcube = {
+ enable = true;
+ # this is the url of the vhost, not necessarily the same as the fqdn of
+ # the mailserver
+ hostName = "mail.sortug.com";
+ extraConfig = ''
+ # starttls needed for authentication, so the fqdn required to match
+ # the certificate
+ $config['smtp_server'] = "tls://${config.mailserver.fqdn}";
+ $config['smtp_user'] = "%u";
+ $config['smtp_pass'] = "%p";
+ '';
+ };
+ services.nginx.enable = true;
+}