mwolson: First attempt at delivering to AFS
authorroot@deleuze.hcoop.net <>
Tue, 13 Feb 2007 22:46:21 +0000 (17:46 -0500)
committerroot <root@deleuze.hcoop.net>
Tue, 13 Feb 2007 22:46:21 +0000 (17:46 -0500)
conf.d/main/01_exim4-config_listmacrosdefs
conf.d/router/600_exim4-config_userforward
conf.d/router/700_exim4-config_procmail
conf.d/router/900_exim4-config_local_user
get-token [new file with mode: 0755]
update-exim4.conf.conf

index fec1059..c0e06d2 100644 (file)
@@ -153,3 +153,6 @@ MAIN_LOG_SELECTOR = +tls_cipher +tls_peerdn
 # hcoop-change: use file_transport = address_file for /etc/aliases
 # delivery, as per old configuration
 SYSTEM_ALIASES_FILE_TRANSPORT = address_file
+
+# hcoop-change: deliver mail to AFS
+MAILDIR_HOME_MAILDIR_LOCATION = /afs/hcoop.net/common/email/$local_part
index 59259ca..61ae035 100644 (file)
@@ -19,6 +19,7 @@
 # forwarding generates a direct delivery to a directory, or a file, or to a
 # pipe, or sets up an auto-reply, respectively.
 #
+# hcoop-change: acquire AFS token for the user
 userforward:
   debug_print = "R: userforward for $local_part@$domain"
   driver = redirect
@@ -26,6 +27,7 @@ userforward:
   check_local_user
   file = $home/.forward
   require_files = $local_part:$home/.forward
+  condition = ${run{/usr/bin/pagsh.openafs -c /etc/exim4/get-token ${local_part}}{1}{0}}
   no_verify
   no_expn
   check_ancestor
index 8d827c7..10d8a4a 100644 (file)
@@ -1,3 +1,4 @@
+# hcoop-change: acquire AFS token for the user
 
 procmail:
   debug_print = "R: procmail for $local_part@$domain"
@@ -10,6 +11,7 @@ procmail:
                   ${if exists{/etc/procmailrc}\
                     {/etc/procmailrc}{${home}/.procmailrc}}:\
                   +/usr/bin/procmail
+  condition = ${run{/usr/bin/pagsh.openafs -c /etc/exim4/get-token ${local_part}}{1}{0}}
   no_verify
   no_expn
 
index 423c729..ffa2b8e 100644 (file)
@@ -5,11 +5,14 @@
 # This router matches local user mailboxes. If the router fails, the error
 # message is "Unknown user".
 
+# hcoop-change: acquire AFS token for the user
+
 local_user:
   debug_print = "R: local_user for $local_part@$domain"
   driver = accept
   domains = +local_domains
   check_local_user
   local_parts = ! root
+  condition = ${run{/usr/bin/pagsh.openafs -c /etc/exim4/get-token ${local_part}}{1}{0}}
   transport = LOCAL_DELIVERY
   cannot_route_message = Unknown user
diff --git a/get-token b/get-token
new file mode 100755 (executable)
index 0000000..3000e7d
--- /dev/null
+++ b/get-token
@@ -0,0 +1,8 @@
+# Get an AFS token for the given user.
+#
+# This is used to deliver mail with the appropriate credentials.
+
+KRB5CCNAME=FILE:/tmp/krb5cc_$1.email
+
+kinit -kt /etc/keytabs/$1.email.keytab
+aklog
index 4f2ce20..e8cb6f6 100644 (file)
@@ -25,7 +25,7 @@ dc_minimaldns='false'
 dc_relay_nets=''
 dc_smarthost=''
 CFILEMODE='644'
-dc_use_split_config='false'
+dc_use_split_config='true'
 dc_hide_mailname=''
 dc_mailname_in_oh='true'
 dc_localdelivery='maildir_home'