Using imap shared folders
wordpress meta
title: 'Using IMAP “Shared Folders”'
date: '2012-11-06T01:32:04-06:00'
status: publish
permalink: /using-imap-shared-folders
author: admin
excerpt: ''
type: post
id: 32
category:
- IMAP
tag: []
post_format: []
title: 'Using IMAP “Shared Folders”'
date: '2012-11-06T01:32:04-06:00'
status: publish
permalink: /using-imap-shared-folders
author: admin
excerpt: ''
type: post
id: 32
category:
- IMAP
tag: []
post_format: []
Or one could also call it a poor man's MS Exchange Public Folders solution. There are several solutions that might work for this but none will probably be as easy to administer as Exchange Public Folders. However this solution does work with Outlook 2007 and 2010 clients.
Operating System
Vanilla Debian Wheezy 64bit
** Pick SSH Server, Standard system utilities
Delete my user since we will use winbind users.
# deluser rrosso
Install Dovecot server.
# apt-get install dovecot-imapd
Setup Active Directory Authentication.
# apt-get install krb5-config krb5-user libkrb5-3 libpam-krb5 samba-common samba winbind smbclient
# cat /etc/krb5.conf
[libdefaults]
default_realm = DOMAIN.COM
dns_lookup_realm = true
dns_lookup_kdc = true
[realms]
DOMAIN.COM = {
kdc = ad1.domain.com
admin_server = ad1.domain.com
}
# kinit administrator
Password for administrator@DOMAIN.COM:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DOMAIN.COM
Valid starting Expires Service principal
30/04/2012 10:39 30/04/2012 20:40 krbtgt/DOMAIN.COM@DOMAIN.COM
renew until 01/05/2012 10:39
In /etc/samba dir:
# cat smb.conf
[global]
workgroup = DOMAIN
realm = DOMAIN.COM
security = ADS
server string = MAIL ARCHIVE SERVER
load printers = no
password server = ad1
password level = 8
username level = 8
local master = no
domain master = no
preferred master = no
encrypt passwords = yes
netbios name = usmailarchserver
client signing = yes
dns proxy = no
socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY
wins support = No
veto files = /*.eml/*.nws/riched20.dll/*.{*}/
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
template homedir = /home/%D/%U
winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
auth methods = winbind
[IPC$]
hosts allow = 127.0.0.1,172.20.0.0/16
hosts deny = 0.0.0.0/0
# /etc/init.d/winbind restart
Stopping the Winbind daemon: winbind.
Starting the Winbind daemon: winbind.
# net ads join -U administrator
Enter administrator's password:
Using short domain name -- DOMAIN
Joined 'USMAILARCHSERVER' to realm 'domain.com'
# /etc/init.d/winbind restart
Stopping the Winbind daemon: winbind.
Starting the Winbind daemon: winbind.
# wbinfo -u | grep -i rrosso
rrosso
# wbinfo -g | grep -i Infrastructure
it infrastructure
...snip
# grep winbind /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
rrosso@jamaica:~$ ssh usmailarchserver
Creating directory '/home/DOMAIN/rrosso'.
Linux usmailarchserver 3.2.0-2-amd64 #1 SMP Sun Apr 15 16:47:38 UTC 2012 x86_64
Dovecot Setup
In /etc/dovecot/conf.d folder:
# grep location *
10-mail.conf:mail_location = maildir:~/Maildir
# grep winbind *
10-auth.conf:auth_winbind_helper_path = /usr/bin/ntlm_auth
# vi 10-mail.conf
# When creating any namespaces, you must also have a private namespace:
namespace {
type = private
separator = /
prefix =
#location defaults to mail_location.
inbox = yes
}
namespace {
type = public
separator = /
prefix = Public/
location = maildir:/PublicFolders
subscriptions = no
}
# /etc/init.d/dovecot restart
Restarting IMAP/POP3 mail server: dovecot.
Exim4 Setup
dpkg-reconfigure exim4-config
** Pick mail sent by smarthost; received via SMTP or fetchmail
** Accept from all hosts by deleting 127.0.0.1 entry
** Maildir format in home directory
In /etc/exim4 folder:
# vi exim4.conf.template
begin routers
# This router handles special mail addresses to be
...snip
shared_folders:
debug_print = "R: shared_folders for $local_part@$domain"
local_parts = "hostmaster:ITAlerts"
driver = accept
transport = maildir_shared_folder
begin transports
...snip
maildir_shared_folder:
driver = appendfile
maildir_format = true
directory = /PublicFolders/.IT.${local_part}/
create_directory = false
check_string = ""
escape_string = ""
delivery_date_add
envelope_to_add
return_path_add
mode = 0777
no_mode_fail_narrower
user = mail
group = 10000
# ps -ef | grep exim
101 14450 1 0 14:29 ? 00:00:00 /usr/sbin/exim4 -bd -q30m
** We are trying to accept hostmaster@ email straight into Maildir so disable system alias for this user.
# grep hostmaster /etc/aliases
#hostmaster: root
# newaliases
# exim4 -bt hostmaster@usmailarchserver.domain.com
R: system_aliases for hostmaster@usmailarchserver.domain.com
R: shared_folders for hostmaster@usmailarchserver.domain.com
hostmaster@usmailarchserver.domain.com
router = shared_folders, transport = maildir_shared_folder
# exim4 -bt ITAlerts@usmailarchserver.domain.com
R: system_aliases for italerts@usmailarchserver.domain.com
R: shared_folders for italerts@usmailarchserver.domain.com
ITAlerts@usmailarchserver.domain.com
router = shared_folders, transport = maildir_shared_folder
# tail -f /var/log/exim4/mainlog
2012-05-04 15:06:21 End queue run: pid=16475
2012-05-04 15:14:31 1SQQl9-0004IN-J6 italerts R=shared_folders T=maildir_shared_folder
2012-05-04 15:14:31 1SQQl9-0004IN-J6 Completed
2012-05-04 15:17:51 1SQQou-0004JG-IE hostmaster R=shared_folders T=maildir_shared_folder
2012-05-04 15:17:51 1SQQou-0004JG-IE Completed
...snip
Add a new e-mail address to drop e-mail into Maildir Folder.
In /etc/exim4 folder:
# grep hostmaster exim4.conf.template
local_parts = "hostmaster:ITAlerts:backupnotifications:busapps"
# grep hostmaster /PublicFolders/mailEnabledList
hostmaster:.IT.hostmaster
# /etc/init.d/exim4 reload
TODO: Documentation that I have collected and need to publish here.
- Permissions for the mailer to drop mail into the Public Folders.
- Change to exim lookup rules for dropping off mail.
- Provisioning a new user to access the folders still need a home dir to be created. Document how to create and setup MailDir for a new user.
- SSL Certificate for Outlook prompts http://paulschreiber.com/blog/2008/08/01/how-to-create-a-self-signed-ssl-certificate-for-dovecot-on-debian/
- Ensure enough Inodes for archive disk
- Careful of where Outlook cache folders. I had to move my Data File in outlook for this account to a large enough disk.
- Disable Outlook IMAP Attachment Downloads
- How to troubleshoot auth_userdb_permission issues
- Enable Dovecot debugging
- Howto rsync folders for backups
Some useful links I encountered:
http://www.debian-administration.org/articles/275
http://wiki.dovecot.org/HowTo/ActiveDirectoryNtlm
http://www.flatmtn.com/article/setting-exim#Exim4-6.1