summaryrefslogtreecommitdiffstats
path: root/mail-server/services.nix
diff options
context:
space:
mode:
authorRobin Raymond <robin@robinraymond.de>2017-08-12 11:27:19 +0200
committerRobin Raymond <robin@robinraymond.de>2017-08-12 11:27:19 +0200
commit60574841c6fd2a95dd3907c73c1f11200f637346 (patch)
treed4e125e1a65daf1551eda50f6bac23c4eaff189b /mail-server/services.nix
parent54e56926d64a5989884c12a64cb3e05d6731782c (diff)
restructuring; now works with 17.03/17.09-pre
I had to remove some of the features, they need to be slowely added in again.
Diffstat (limited to 'mail-server/services.nix')
-rw-r--r--mail-server/services.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/mail-server/services.nix b/mail-server/services.nix
new file mode 100644
index 0000000..fe848d9
--- /dev/null
+++ b/mail-server/services.nix
@@ -0,0 +1,61 @@
+# nixos-mailserver: a simple mail server
+# Copyright (C) 2016-2017 Robin Raymond
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>
+
+{ mail_dir, vmail_user_name, vmail_id_start, vmail_group_name, login_accounts,
+valiases, domain, enable_imap, enable_pop3 }:
+
+let
+ dovecot_maildir = "maildir:" + mail_dir + "/%d/%n/";
+ vmail_user = [{
+ name = vmail_user_name;
+ isNormalUser = false;
+ uid = vmail_id_start;
+ home = mail_dir;
+ createHome = true;
+ group = vmail_group_name;
+ }];
+
+ # accountsToUser :: String -> UserRecord
+ accountsToUser = x: {
+ name = x + "@" + domain;
+ isNormalUser = false;
+ group = vmail_group_name;
+ };
+
+ # mail_user :: [ UserRecord ]
+ mail_user = map accountsToUser login_accounts;
+
+ # valiasToString :: { from = "..."; to = "..." } -> String
+ valiasToString = x: x.from + "@" + domain + " " + x.to "@" + domain + "\n";
+
+ # valias_file :: [ String ]
+ valiases_file = map valiasToString valiases;
+in
+{
+ # rspamd
+ rspamd = {
+ enable = true;
+ };
+
+ postfix = import ./postfix.nix {
+ valiases_file = ""; vaccounts_file = ""; #< TODO: FIX
+ };
+
+ dovecot2 = import ./dovecot.nix {
+ inherit vmail_group_name vmail_user_name dovecot_maildir enable_imap
+ enable_pop3;
+ };
+}