<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mailutils.org/usqay/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zeus+Panchenko</id>
	<title>Mailutils - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://mailutils.org/usqay/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zeus+Panchenko"/>
	<link rel="alternate" type="text/html" href="https://mailutils.org/wiki/Special:Contributions/Zeus_Panchenko"/>
	<updated>2026-08-06T13:33:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.13</generator>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=376</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=376"/>
		<updated>2014-05-09T04:28:19Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
We have two domains: '''foo.bar''' and '''foo.com''', and want to provide email service for separate users like '''testuser@foo.bar''' and '''testuser@foo.com'''.&lt;br /&gt;
&lt;br /&gt;
For that we need:&lt;br /&gt;
&lt;br /&gt;
* to get users database in LDAP DB (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
build cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sendmail.conf ====&lt;br /&gt;
&lt;br /&gt;
in FreeBSD it is /usr/local/lib/sasl2/Sendmail.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
log_level: 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DNS PTR ====&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' PTR '''''is not looked at mailertable''''' and considered as '''''local'''''&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `SMTPCLUSTER')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== submit.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
divert(-1)&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
divert(0)dnl&lt;br /&gt;
VERSIONID(`$Id: submit.mc,v 8.14 2006/04/05 05:54:41 ca Exp $')&lt;br /&gt;
define(`confCF_VERSION', `Submit')dnl&lt;br /&gt;
define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining&lt;br /&gt;
define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet&lt;br /&gt;
define(`confTIME_ZONE', `USE_TZ')dnl&lt;br /&gt;
define(`confDONT_INIT_GROUPS', `True')dnl&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`msp', `[127.0.0.1]')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-TLS,M=Eab')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=375</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=375"/>
		<updated>2014-03-18T23:34:59Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in LDAP DB (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
build cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sendmail.conf ====&lt;br /&gt;
&lt;br /&gt;
in FreeBSD it is /usr/local/lib/sasl2/Sendmail.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
log_level: 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DNS PTR ====&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' PTR '''''is not looked at mailertable''''' and considered as '''''local'''''&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `SMTPCLUSTER')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== submit.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
divert(-1)&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
divert(0)dnl&lt;br /&gt;
VERSIONID(`$Id: submit.mc,v 8.14 2006/04/05 05:54:41 ca Exp $')&lt;br /&gt;
define(`confCF_VERSION', `Submit')dnl&lt;br /&gt;
define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining&lt;br /&gt;
define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet&lt;br /&gt;
define(`confTIME_ZONE', `USE_TZ')dnl&lt;br /&gt;
define(`confDONT_INIT_GROUPS', `True')dnl&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`msp', `[127.0.0.1]')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-TLS,M=Eab')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=374</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=374"/>
		<updated>2014-03-04T16:26:03Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* sendmail.mc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
build cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sendmail.conf ====&lt;br /&gt;
&lt;br /&gt;
in FreeBSD it is /usr/local/lib/sasl2/Sendmail.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
log_level: 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DNS PTR ====&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' PTR '''''is not looked at mailertable''''' and considered as '''''local'''''&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `SMTPCLUSTER')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== submit.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
divert(-1)&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
divert(0)dnl&lt;br /&gt;
VERSIONID(`$Id: submit.mc,v 8.14 2006/04/05 05:54:41 ca Exp $')&lt;br /&gt;
define(`confCF_VERSION', `Submit')dnl&lt;br /&gt;
define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining&lt;br /&gt;
define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet&lt;br /&gt;
define(`confTIME_ZONE', `USE_TZ')dnl&lt;br /&gt;
define(`confDONT_INIT_GROUPS', `True')dnl&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`msp', `[127.0.0.1]')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-TLS,M=Eab')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=373</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=373"/>
		<updated>2014-03-04T13:14:13Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* sendmail.mc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
build cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sendmail.conf ====&lt;br /&gt;
&lt;br /&gt;
in FreeBSD it is /usr/local/lib/sasl2/Sendmail.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
log_level: 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DNS PTR ====&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' PTR '''''is not looked at mailertable''''' and considered as '''''local'''''&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `SMTPCLUSTER')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=372</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=372"/>
		<updated>2014-03-04T13:13:44Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* mailertable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
build cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sendmail.conf ====&lt;br /&gt;
&lt;br /&gt;
in FreeBSD it is /usr/local/lib/sasl2/Sendmail.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
log_level: 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DNS PTR ====&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' PTR '''''is not looked at mailertable''''' and considered as '''''local'''''&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: SMTPCLUSTER&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=371</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=371"/>
		<updated>2014-03-04T13:10:35Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* /lib/sasl2/Sendmail.conf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
build cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sendmail.conf ====&lt;br /&gt;
&lt;br /&gt;
in FreeBSD it is /usr/local/lib/sasl2/Sendmail.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
log_level: 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DNS PTR ====&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' PTR '''''is not looked at mailertable''''' and considered as '''''local'''''&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=370</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=370"/>
		<updated>2014-03-04T13:09:37Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* cyrus-sasl2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
build cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;path to&amp;gt;/lib/sasl2/Sendmail.conf ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
log_level: 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DNS PTR ====&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' PTR '''''is not looked at mailertable''''' and considered as '''''local'''''&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=369</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=369"/>
		<updated>2014-02-28T20:14:30Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* DNS PTR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DNS PTR ====&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' PTR '''''is not looked at mailertable''''' and considered as '''''local'''''&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=368</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=368"/>
		<updated>2014-02-28T20:09:55Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DNS PTR ====&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' PTR domain '''''is not looked at mailertable''''' and considered '''''local'''''&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=367</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=367"/>
		<updated>2014-02-27T15:55:15Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* mailertable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put it in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=366</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=366"/>
		<updated>2014-01-08T23:24:47Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* aliases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create separate, dedicated alias user and to do all need manipulations via it's .sieve script&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=365</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=365"/>
		<updated>2014-01-08T23:23:27Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== aliases ====&lt;br /&gt;
&lt;br /&gt;
native, sendmail aliases db supports only one domain and one users db&lt;br /&gt;
&lt;br /&gt;
smap doesn't working with LDAP yet&lt;br /&gt;
&lt;br /&gt;
the only way to do aliases this time it is to create alias user and to .sieve all need manipulations &lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=364</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=364"/>
		<updated>2014-01-08T23:18:53Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* maidag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  # pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;; # this time %u contains no domain part&lt;br /&gt;
  pattern &amp;quot;%h/.sieve&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=363</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=363"/>
		<updated>2014-01-08T23:16:35Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* mailutils.rc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
&lt;br /&gt;
  field-map &amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;name=uid:&amp;quot;&lt;br /&gt;
&amp;quot;passwd=userPassword:&amp;quot;&lt;br /&gt;
&amp;quot;uid=uidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gid=gidNumber:&amp;quot;&lt;br /&gt;
&amp;quot;gecos=gecos:&amp;quot;&lt;br /&gt;
&amp;quot;dir=homeDirectory:&amp;quot;&lt;br /&gt;
&amp;quot;shell=loginShell:&amp;quot;&lt;br /&gt;
&amp;quot;mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=362</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=362"/>
		<updated>2014-01-08T23:14:49Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* mailutils.rc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))&amp;quot;&lt;br /&gt;
&amp;quot;(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=361</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=361"/>
		<updated>2013-09-01T22:20:37Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=360</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=360"/>
		<updated>2013-08-30T22:43:40Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://forums.fedoraforum.org/showthread.php?t=80057 About cyrus-sasl and openldap - FedoraForum.org]&lt;br /&gt;
* [http://www.openldap.org/faq/data/cache/544.html OpenLDAP Faq-O-Matic: How can OpenLDAP, Cyrus-SASL, OpenSSL and KerberosV be combined?]&lt;br /&gt;
* [http://www.sendmail.org/~ca/email/cyrus2/options.html Options for Cyrus SASL]&lt;br /&gt;
* [http://p-o.co.uk/tech-articles/63-howto-svnserve-sasl-and-ldap.html HOW-TO svnserve SASL and LDAP]&lt;br /&gt;
* [http://www.redhat.com/archives/redhat-list/2002-November/msg02807.html Re: sendmail, SMTP Authentication &amp;amp; LDAP]&lt;br /&gt;
* [http://docs.snake.de/smtp-auth.html SMTP-AUTH for sendmail 8.12.x]&lt;br /&gt;
* [http://www.sendmail.org/~gshapiro/8.10.Training/schema.html sendmail 8.10.0: FEATURE(ldap_routing) Schema]&lt;br /&gt;
* [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html cf/README - LDAP For Aliases, Maps, And Classes]&lt;br /&gt;
* [http://www.ltrr.arizona.edu/~mmunro/ldapmail/ OpenLDAP, SASL, and Sendmail]&lt;br /&gt;
* [http://seriousbirder.com/blogs/openldap-sendmail-configuration-schema-sample/ OpenLDAP Sendmail Configuration Schema Sample]&lt;br /&gt;
* [http://ftp.ofloo.net/pub/howtos/mail/sendmail-ldap.html Sendmail+LDAP HOWTO]&lt;br /&gt;
* [http://logout.sh/computers/sendmail/ sendmail with LDAP, TLS and AUTH]&lt;br /&gt;
* [http://kaivanov.blogspot.com/2010/09/routing-and-alias-management-with.html Linux Administration: Routing and Alias Management with OpenLDAP and Sendmail]&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=359</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=359"/>
		<updated>2013-08-30T22:29:31Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=358</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=358"/>
		<updated>2013-08-30T22:26:20Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; ldd /usr/sbin/sendmail &lt;br /&gt;
/usr/sbin/sendmail:&lt;br /&gt;
        libsasl2.so.2 =&amp;gt; /usr/local/lib/libsasl2.so.2 (0x8008cd000)&lt;br /&gt;
        libssl.so.6 =&amp;gt; /usr/lib/libssl.so.6 (0x800ae8000)&lt;br /&gt;
        libcrypto.so.6 =&amp;gt; /lib/libcrypto.so.6 (0x800d3b000)&lt;br /&gt;
        libdb-4.4.so.0 =&amp;gt; /usr/local/lib/libdb-4.4.so.0 (0x8010dc000)&lt;br /&gt;
        libldap-2.4.so.8 =&amp;gt; /usr/local/lib/libldap-2.4.so.8 (0x8015f8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; openssl s_client -connect relay.foo.bar:25 -starttls smtp         &lt;br /&gt;
CONNECTED(00000004)&lt;br /&gt;
depth=0 /C=AU/ST=WS/L=Sidney/O=FooBar llc/OU=IT/CN=relay.foo.bar/emailAddress=security@foo.bar&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 2486 bytes and written 384 bytes&lt;br /&gt;
---&lt;br /&gt;
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;
...&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : TLSv1&lt;br /&gt;
...&lt;br /&gt;
---&lt;br /&gt;
250 HELP&lt;br /&gt;
ehlo test&lt;br /&gt;
250-relay.foo.bar Hello [A.A.A.A], pleased to meet you&lt;br /&gt;
...&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
250 HELP&lt;br /&gt;
quit&lt;br /&gt;
221 2.0.0 relay.foo.bar closing connection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=357</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=357"/>
		<updated>2013-08-30T22:15:21Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet relay.foo.bar 25&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to smtpgate.email.arizona.edu.&lt;br /&gt;
...&lt;br /&gt;
250-AUTH=LOGIN PLAIN&lt;br /&gt;
250-AUTH LOGIN PLAIN&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=356</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=356"/>
		<updated>2013-08-30T22:09:56Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with [http://www.sendmail.com/sm/open_source/docs/m4/starttls.html STARTTLS], [http://www.sendmail.org/~ca/email/auth.html SMTPAUTH], [http://www.sendmail.com/sm/open_source/docs/m4/ldap.html LDAP] and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=355</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=355"/>
		<updated>2013-08-30T21:59:25Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* OpenLDAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one &lt;br /&gt;
&lt;br /&gt;
look at &lt;br /&gt;
* &amp;quot;LDAP System Administration&amp;quot; By Gerald Carter; ISBN: 1-56592-491-6&lt;br /&gt;
* &amp;quot;Understanding and Deploying LDAP Directory Services&amp;quot;, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=354</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=354"/>
		<updated>2013-08-30T21:51:20Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* OpenLDAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one (to dig deeper, look at Understanding and Deploying LDAP Directory Services, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8).&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=353</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=353"/>
		<updated>2013-08-30T21:33:28Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* OpenLDAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
The important decision have to be made on account of the directory topology: flat namespace or a hierarchical one&amp;lt;ref&amp;gt;Understanding and Deploying LDAP Directory Services, Second Edition By Timothy A. Howes Ph.D., Mark C. Smith, Gordon S. Good; ISBN: 0-672-32316-8&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=352</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=352"/>
		<updated>2013-08-30T21:15:22Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* mu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;gt; telnet pop.foo.bar 110&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to pop.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
+OK POP3 Ready &amp;lt;24289.1377897169@relay.foo.bar&amp;gt;&lt;br /&gt;
user testuser@foo.bar&lt;br /&gt;
+OK&lt;br /&gt;
pass *****&lt;br /&gt;
+OK opened mailbox for testuser&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
#&amp;gt; telnet imap.foo.bar 143&lt;br /&gt;
Trying X.X.X.X...&lt;br /&gt;
Connected to imap.foo.bar.&lt;br /&gt;
Escape character is '^]'.&lt;br /&gt;
* OK IMAP4rev1&lt;br /&gt;
00 login testuser@foo.bar *****&lt;br /&gt;
00 OK LOGIN Completed&lt;br /&gt;
11 logout&lt;br /&gt;
* BYE Session terminating.&lt;br /&gt;
11 OK LOGOUT Completed&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=351</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=351"/>
		<updated>2013-08-30T21:08:35Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database accessible via LDAP (OpenLDAP as LDAP server)&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail via mailutils&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=350</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=350"/>
		<updated>2013-08-30T21:06:50Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* LDAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=349</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=349"/>
		<updated>2013-08-30T21:05:50Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* sendmail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support ==&lt;br /&gt;
&lt;br /&gt;
=== cyrus-sasl2 ===&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# testsaslauthd -u testuser@foo.bar -p theverypassword&lt;br /&gt;
0: OK &amp;quot;Success.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail ===&lt;br /&gt;
==== build config ====&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sendmail.mc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mailertable ====&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== test ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=348</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=348"/>
		<updated>2013-08-30T20:59:44Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* LDIF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .ldif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=347</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=347"/>
		<updated>2013-08-30T20:58:49Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=346</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=346"/>
		<updated>2013-08-30T20:57:16Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* LDAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ldapsearch -xZZ -D uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar -w ***** -b ou=people,dc=foo,dc=bar -v &amp;quot;(&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&amp;quot;                                      &lt;br /&gt;
ldap_initialize( &amp;lt;DEFAULT&amp;gt; )&lt;br /&gt;
filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
requesting: All userApplication attributes&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;lt;ou=people,dc=foo,dc=bar&amp;gt; with scope subtree&lt;br /&gt;
# filter: (&amp;amp;(authorizedService=mail@foo.bar)(uid=testuser))&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# mail@foo.bar, officeX-testuser, People, foo, bar&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associatedDomain: foo.bar&lt;br /&gt;
authorizedService: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
gidNumber: 10106&lt;br /&gt;
homeDirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
mu-mailBox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
loginShell: /sbin/nologin&lt;br /&gt;
objectClass: posixAccount&lt;br /&gt;
objectClass: shadowAccount&lt;br /&gt;
objectClass: inetOrgPerson&lt;br /&gt;
objectClass: authorizedServiceObject&lt;br /&gt;
objectClass: domainRelatedObject&lt;br /&gt;
objectClass: mailutilsAccount&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: testuser&lt;br /&gt;
uidNumber: 10009&lt;br /&gt;
userPassword:: *****************************************&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 3&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 2&lt;br /&gt;
# numEntries: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=345</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=345"/>
		<updated>2013-08-30T20:37:38Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=344</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=344"/>
		<updated>2013-08-30T20:36:49Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* LDAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ldap.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE    dc=foo,dc=bar&lt;br /&gt;
URI     ldap://ldap.foo.bar:389&lt;br /&gt;
SIZELIMIT       0&lt;br /&gt;
TLS_REQCERT allow&lt;br /&gt;
TLS_CACERT /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=343</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=343"/>
		<updated>2013-08-30T20:34:16Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* sendmail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
buil cyrus-sasl2 with ldap and saslauthd &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saslauthd.conf&lt;br /&gt;
&lt;br /&gt;
ldap_servers: ldap://ldap.foo.bar/&lt;br /&gt;
ldap_start_tls: yes&lt;br /&gt;
ldap_tls_cacert_file: /usr/local/etc/openldap/cacert.pem&lt;br /&gt;
ldap_auth_method: bind&lt;br /&gt;
ldap_bind_dn: uid=bind@mail.foo.bar,ou=people,dc=foo,dc=bar&lt;br /&gt;
ldap_password: ******&lt;br /&gt;
ldap_search_base: dc=foo,dc=bar&lt;br /&gt;
ldap_filter: (&amp;amp;(uid=%U)(authorizedService=mail@foo.bar))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=342</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=342"/>
		<updated>2013-08-30T12:23:16Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* mailertable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 testuser@foo.bar&lt;br /&gt;
canonify           input: testuser @ foo . bar&lt;br /&gt;
Canonify2          input: testuser &amp;lt; @ foo . bar &amp;gt;&lt;br /&gt;
Canonify2        returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
canonify         returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse              input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse0           returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal         input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
ParseLocal       returns: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1             input: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple     input: &amp;lt; local-ldap : foo . bar &amp;gt; testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
MailerToTriple   returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
Parse1           returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
parse            returns: $# local-ldap $@ foo . bar $: testuser &amp;lt; @ foo . bar . &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=341</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=341"/>
		<updated>2013-08-30T12:19:21Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* pop3d */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=340</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=340"/>
		<updated>2013-08-30T12:19:05Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* pop3d */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#bulletin-source /var/spool/bulletin/bulletin.mbox;&lt;br /&gt;
#bulletin-db /var/spool/bulletin/bulletin;&lt;br /&gt;
max-children 30;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/pop3d.pid;&lt;br /&gt;
timeout 180;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:995 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=339</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=339"/>
		<updated>2013-08-30T11:54:09Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* maidag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debug {&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  tag &amp;quot;maidag&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
filter {&lt;br /&gt;
  language &amp;quot;sieve&amp;quot;;&lt;br /&gt;
  pattern &amp;quot;/usr/local/etc/mailutils/scripts/%u&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=338</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=338"/>
		<updated>2013-08-30T11:53:06Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* imap4d */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tls {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  ssl-cert /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
  ssl-key  /usr/local/etc/mailutils/ssl/mu.pem;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
  facility local2;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mandatory-locking {&lt;br /&gt;
  enable 1;&lt;br /&gt;
  lock-directory /tmp;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
debug {&lt;br /&gt;
  level &amp;quot;server.trace0&amp;quot;;&lt;br /&gt;
  line-info yes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
create-home-dir 1;&lt;br /&gt;
shared-namespace &amp;quot;/var/mail/IMAP_SHARE&amp;quot;;&lt;br /&gt;
shared-mailbox-mode g=rw;&lt;br /&gt;
&lt;br /&gt;
max-children 50;&lt;br /&gt;
mode daemon;&lt;br /&gt;
pidfile /var/run/imap4d.pid;&lt;br /&gt;
timeout 300;&lt;br /&gt;
&lt;br /&gt;
server X.X.X.X {&lt;br /&gt;
  transcript yes;&lt;br /&gt;
  tls ondemand;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls required;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
server Y.Y.Y.Y:993 {&lt;br /&gt;
  transcript no;&lt;br /&gt;
  tls connection;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl {&lt;br /&gt;
  log from any &amp;quot;Connect from ${address}&amp;quot;;&lt;br /&gt;
#  allow Z.Z.Z.Z;&lt;br /&gt;
#  deny any;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=337</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=337"/>
		<updated>2013-08-30T11:49:45Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* config */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
configure \&lt;br /&gt;
    CPPFLAGS='-I/usr/local/include/ -I/usr/local/include/db44/ -I/usr/local/include/postgresql/ -I/usr/local/include/gnutls' \&lt;br /&gt;
    LDFLAGS='-L/usr/local/lib/ -L/usr/local/lib/postgresql/ -L/usr/local/lib/db44' \&lt;br /&gt;
    --enable-debug \&lt;br /&gt;
    --with-berkeley-db \&lt;br /&gt;
    --enable-pam \&lt;br /&gt;
    --with-gnutls \&lt;br /&gt;
    --with-postgres \&lt;br /&gt;
    --with-ldap \&lt;br /&gt;
    --disable-nls \&lt;br /&gt;
    --disable-nntp \&lt;br /&gt;
    --disable-radius&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=336</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=336"/>
		<updated>2013-08-30T11:48:25Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: /* mailertable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
in case to leave it as file, then in /etc/mail/mailertable put&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo.bar    local-ldap:foo.bar&lt;br /&gt;
foo.com    local-ldap:foo.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in case to put in in LDAP we need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.bar,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.bar&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.bar&lt;br /&gt;
&lt;br /&gt;
dn: sendmailMTAKey=foo.com,sendmailMTAMapName=mailer,ou=core.relay.foo.bar,ou=Sendmail,dc=foo,dc=bar&lt;br /&gt;
objectclass: sendmailMTA&lt;br /&gt;
objectclass: sendmailMTAMap&lt;br /&gt;
objectclass: sendmailMTAMapObject&lt;br /&gt;
sendmailmtacluster: fo01&lt;br /&gt;
sendmailmtakey: foo.com&lt;br /&gt;
sendmailmtamapname: mailer&lt;br /&gt;
sendmailmtamapvalue: local-ldap:foo.com&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=335</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=335"/>
		<updated>2013-08-30T11:40:39Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include         /usr/local/etc/openldap/schema/core.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/inetorgperson.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/nis.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/openldap.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/misc.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/ldapns.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/asterisk.schema&lt;br /&gt;
include         /usr/local/etc/openldap/schema/sendmail.schema&lt;br /&gt;
&lt;br /&gt;
loglevel        stats&lt;br /&gt;
&lt;br /&gt;
pidfile         /var/run/openldap/slapd.pid&lt;br /&gt;
argsfile        /var/run/openldap/slapd.args&lt;br /&gt;
&lt;br /&gt;
modulepath      /usr/local/libexec/openldap&lt;br /&gt;
moduleload      back_bdb&lt;br /&gt;
moduleload      back_hdb&lt;br /&gt;
moduleload      back_monitor&lt;br /&gt;
moduleload      syncprov&lt;br /&gt;
&lt;br /&gt;
TLSCACertificateFile  /usr/local/etc/openldap/ssl/cacert.pem&lt;br /&gt;
TLSCertificateFile    /usr/local/etc/openldap/ssl/srv1cert.pem&lt;br /&gt;
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/srv1key.pem&lt;br /&gt;
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3&lt;br /&gt;
TLSVerifyClient never&lt;br /&gt;
security ssf=128&lt;br /&gt;
&lt;br /&gt;
access to dn.exact=&amp;quot;&amp;quot; by * read&lt;br /&gt;
access to *&lt;br /&gt;
       by peername.ip=127.0.0.1 break&lt;br /&gt;
       by peername.ip=X.X.X.X break&lt;br /&gt;
access to *&lt;br /&gt;
       by set=&amp;quot;[cn=bind,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; read&lt;br /&gt;
       by set=&amp;quot;[cn=admin,ou=group,dc=ibs]/memberUid &amp;amp; user/uid&amp;quot; write&lt;br /&gt;
       by self read&lt;br /&gt;
       by * search&lt;br /&gt;
&lt;br /&gt;
database        bdb&lt;br /&gt;
suffix          &amp;quot;dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootdn          &amp;quot;cn=ldapmaster,dc=foo,dc=bar&amp;quot;&lt;br /&gt;
rootpw          {SSHA}Osdfkjwh89974500sdfjhjhLKJHKLJLKJlLKJljlj&lt;br /&gt;
directory       /var/db/openldap-data/foo.bar&lt;br /&gt;
monitoring      on&lt;br /&gt;
&lt;br /&gt;
index   default eq,sub&lt;br /&gt;
index   objectClass eq&lt;br /&gt;
index   uidNumber eq&lt;br /&gt;
index   gidNumber eq&lt;br /&gt;
index   memberUid eq&lt;br /&gt;
index   cn,sn,uid,displayName pres,sub,eq&lt;br /&gt;
index   authorizedService eq&lt;br /&gt;
index   sendmailMTAAliasGrouping eq&lt;br /&gt;
index   sendmailMTACluster eq&lt;br /&gt;
index   sendmailMTAHost eq&lt;br /&gt;
index   sendmailMTAKey eq&lt;br /&gt;
index   sendmailMTAMapName eq&lt;br /&gt;
&lt;br /&gt;
overlay memberof&lt;br /&gt;
&lt;br /&gt;
overlay unique&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.bar)&lt;br /&gt;
unique_uri ldap:///ou=People,dc=foo,dc=bar?uid?sub?(authorizedService=mail@foo.com)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: unique user across whole user database&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.com,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.com&lt;br /&gt;
authorizedservice: mail@foo.com&lt;br /&gt;
cn: testuser@foo.com&lt;br /&gt;
description: auxiliary service/s account (like email, web, e.t.c. access)&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.com/testuser@foo.com&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.com/testuser@foo.com&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.com&lt;br /&gt;
uid: testuser@foo.com&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
test.foo.bar    local-ldap:test.foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=334</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=334"/>
		<updated>2013-08-30T11:20:58Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
gidnumber: 12345&lt;br /&gt;
homedirectory: /nonexistent&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
objectclass: top&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: organizationalPerson&lt;br /&gt;
objectclass: person&lt;br /&gt;
objectclass: inetLocalMailRecipient&lt;br /&gt;
sn: test user&lt;br /&gt;
uid: officeX-testuser&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&lt;br /&gt;
dn: authorizedService=mail@foo.bar,uid=officeX-testuser,ou=People,dc=foo,dc=bar&lt;br /&gt;
associateddomain: foo.bar&lt;br /&gt;
authorizedservice: mail@foo.bar&lt;br /&gt;
cn: testuser@foo.bar&lt;br /&gt;
gidnumber: 10106&lt;br /&gt;
homedirectory: /var/mail/IMAP_HOMES/foo.bar/testuser@foo.bar&lt;br /&gt;
loginshell: /sbin/nologin&lt;br /&gt;
mu-mailbox: maildir:/var/mail/foo.bar/testuser@foo.bar&lt;br /&gt;
objectclass: posixAccount&lt;br /&gt;
objectclass: shadowAccount&lt;br /&gt;
objectclass: inetOrgPerson&lt;br /&gt;
objectclass: authorizedServiceObject&lt;br /&gt;
objectclass: domainRelatedObject&lt;br /&gt;
objectclass: mailutilsAccount&lt;br /&gt;
sn: testuser@foo.bar&lt;br /&gt;
uid: testuser@foo.bar&lt;br /&gt;
uidnumber: 10001&lt;br /&gt;
userpassword: {CRYPT}$1$dtyhERYdf$dfDGGsdHJKTIKT.34345DFSF/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
test.foo.bar    local-ldap:test.foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailutils.rc&lt;br /&gt;
&lt;br /&gt;
ldap {&lt;br /&gt;
  enable yes;&lt;br /&gt;
  url &amp;quot;ldap://ldap.foo.bar:389/&amp;quot;;&lt;br /&gt;
  base &amp;quot;ou=people,dc=ibs&amp;quot;;&lt;br /&gt;
  binddn &amp;quot;uid=bind@mai.foo.bar,ou=people,dc=foo,dc=bar&amp;quot;;&lt;br /&gt;
  passwd &amp;quot;*****&amp;quot;;&lt;br /&gt;
  tls yes;&lt;br /&gt;
  debug 1;&lt;br /&gt;
  field-map &amp;quot;name=uid:passwd=userPassword:uid=uidNumber:gid=gidNumber:gecos=gecos:dir=homeDirectory:shell=loginShell:mailbox=mu-mailBox&amp;quot;;&lt;br /&gt;
  getpwnam &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
  getpwuid &amp;quot;(|(&amp;amp;(authorizedService=mail@foo.bar)(uid=${user}))(&amp;amp;(authorizedService=mail@foo.bar)(cn=${user}))(&amp;amp;(authorizedService=mail@foo.com)(cn=${user})))&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
auth {&lt;br /&gt;
  authorization generic:ldap:system;&lt;br /&gt;
  authentication generic:ldap:system;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
mailbox {&lt;br /&gt;
  mailbox-type &amp;quot;maildir&amp;quot;;&lt;br /&gt;
  mailbox-pattern &amp;quot;maildir:/var/mail;type=index;param=2;user=${user}&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
locking {&lt;br /&gt;
  retry-count 400;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
include /usr/local/etc/mailutils;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=333</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=333"/>
		<updated>2013-08-29T18:35:23Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
test.foo.bar    local-ldap:test.foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=332</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=332"/>
		<updated>2013-08-29T18:34:29Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
all described was deployed on FreeBSD&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
building sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
cyrus-sasl configured with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./configure --includedir=/usr/local/include --enable-static --with-rc4=openssl --with-dblib=none --disable-anon --disable-cram --disable-digest --disable-gssapi --disable-krb4 --disable-ntlm --disable-otp --disable-plain --disable-scram --enable-ldapdb --with-ldap=/usr/local --with-openssl=yes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
test.foo.bar    local-ldap:test.foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test ===&lt;br /&gt;
&lt;br /&gt;
sendmail -bt&lt;br /&gt;
&amp;gt; 3,0 blabla@foo.bar&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=331</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=331"/>
		<updated>2013-08-29T13:45:14Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
we'll build sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnl * Sendmail configuration&lt;br /&gt;
divert(-1)&lt;br /&gt;
OSTYPE(freebsd6)&lt;br /&gt;
dnl * To eliminate 8-&amp;gt;7 bit base64 enconding&lt;br /&gt;
define(`SMTP_MAILER_FLAGS',`8')&lt;br /&gt;
dnl * Do not reveal my version number&lt;br /&gt;
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_) $.&lt;br /&gt;
        by $j$?r with $r$. id $i$?u&lt;br /&gt;
        for $u$.; $b')&lt;br /&gt;
dnl * Also, disable VRFY,EXPN&lt;br /&gt;
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,noetrn,needmailhelo')&lt;br /&gt;
&lt;br /&gt;
dnl * do STARTTLS&lt;br /&gt;
define(`confCACERT_PATH', `/etc/mail/certs')dnl&lt;br /&gt;
define(`confCACERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`localCERT', `/etc/mail/certs/sendmail.pem')dnl&lt;br /&gt;
define(`confSERVER_CERT', `localCERT')dnl&lt;br /&gt;
define(`confSERVER_KEY',  `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_CERT', `localCERT')dnl&lt;br /&gt;
define(`confCLIENT_KEY',  `localCERT')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * do SMTPAUTH&lt;br /&gt;
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl&lt;br /&gt;
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * look for AuthOptions @ op.ps&lt;br /&gt;
define(`confAUTH_OPTIONS', `A p y')dnl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
define(`confSAVE_FROM_LINES', `True')dnl&lt;br /&gt;
define(`HELP_FILE',`none')dnl&lt;br /&gt;
define(`confDELIVERY_MODE', `background')dnl&lt;br /&gt;
&lt;br /&gt;
dnl * define(`confMAX_MESSAGE_SIZE',`31457280')&lt;br /&gt;
define(`confERROR_MESSAGE',`/etc/mail/error-header')dnl&lt;br /&gt;
define(`confREJECT_MSG',`550 Access denied. For our users call IT dpt 911')dnl&lt;br /&gt;
define(`confRELAY_MSG', `550 Relaying denied. For our users call IT dpt 911')dnl&lt;br /&gt;
&lt;br /&gt;
dnl define(`confSMTP_LOGIN_MSG',`$j server; $b')&lt;br /&gt;
define(`confSMTP_LOGIN_MSG',`$j server ready.\nWelcome to us.\nSending UBE is forbidden.\nViolators will be severely prosecuted.')&lt;br /&gt;
&lt;br /&gt;
dnl * DAEMON_OPTIONS(`Name=MTA,Addr=0.0.0.0')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA,Addr=X.X.X.X')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local0,Addr=127.0.0.1')&lt;br /&gt;
DAEMON_OPTIONS(`Name=MTA-local3,Addr=Y.Y.Y.Y')&lt;br /&gt;
DAEMON_OPTIONS(`Family=inet,Name=MTA-SSL,Port=465,M=abs')&lt;br /&gt;
&lt;br /&gt;
# Maps&lt;br /&gt;
define(`confLDAP_DEFAULT_SPEC', `-H ldaps://ldap.foo.bar -b ou=foo.bar,ou=Sendmail,dc=foo,dc=bar -w3 -d uid=bind@mail.foo,ou=people,dc=foo,dc=bar -P /etc/mail/ldappass')dnl&lt;br /&gt;
define(`confLDAP_CLUSTER', `fo01')&lt;br /&gt;
&lt;br /&gt;
LOCAL_CONFIG&lt;br /&gt;
Klocal_alias hash -T&amp;lt;TMPF&amp;gt; -o /etc/mail/aliases&lt;br /&gt;
Kldap_alias ldap -k (&amp;amp;(objectClass=sendmailMTAAliasObject)(sendmailMTAAliasGrouping=aliases)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAKey=%0)) -v sendmailMTAAliasValue&lt;br /&gt;
define(`ALIAS_FILE',`sequence: local_alias ldap_alias')&lt;br /&gt;
&lt;br /&gt;
FEATURE(`access_db', `LDAP')&lt;br /&gt;
FEATURE(`mailertable', `LDAP')&lt;br /&gt;
&lt;br /&gt;
FEATURE(use_cw_file)&lt;br /&gt;
FEATURE(use_ct_file)&lt;br /&gt;
FEATURE(redirect)&lt;br /&gt;
FEATURE(always_add_domain)&lt;br /&gt;
FEATURE(blacklist_recipients)&lt;br /&gt;
FEATURE(relay_entire_domain)&lt;br /&gt;
&lt;br /&gt;
# Milter&lt;br /&gt;
define(`confMILTER_LOG_LEVEL',4)&lt;br /&gt;
INPUT_MAIL_FILTER(`mailfrom', `S=unix:/var/run/mailfromd/mailfromd.sock, F=T, T=S:120s;R:360s')&lt;br /&gt;
&lt;br /&gt;
# Mailers&lt;br /&gt;
MAILER_DEFINITIONS&lt;br /&gt;
Mlocal-ldap,    P=/usr/local/sbin/maidag, F=lsDFMA5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,&lt;br /&gt;
                T=DNS/RFC822/X-Unix,&lt;br /&gt;
                A=maidag $u@$h&lt;br /&gt;
&lt;br /&gt;
MAILER(smtp)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
test.foo.bar    local-ldap:test.foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=330</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=330"/>
		<updated>2013-08-29T13:35:03Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
we'll build sendmail with STARTTLS, SMTPAUTH, LDAP and db44 support&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
site.config.m4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# general&lt;br /&gt;
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
## DB44&lt;br /&gt;
#APPENDDEF(`confENVDEF', `-I/usr/local/include -I/usr/local/include/db44')&lt;br /&gt;
#APPENDDEF(`conf_sendmail_LIBS', `-L/usr/local/lib -L/usr/local/lib/db44')&lt;br /&gt;
&lt;br /&gt;
# SASL2 (smtp authentication)&lt;br /&gt;
APPENDDEF(`confENVDEF', `-DSASL=2')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')&lt;br /&gt;
&lt;br /&gt;
# LDAP&lt;br /&gt;
APPENDDEF(`confMAPDEF', `-DLDAPMAP')&lt;br /&gt;
APPENDDEF(`confLIBS', `-lldap -llber')&lt;br /&gt;
&lt;br /&gt;
# STARTTLS (smtp + tls/ssl)&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_1')&lt;br /&gt;
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')&lt;br /&gt;
&lt;br /&gt;
# rest&lt;br /&gt;
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER -DSOCKETMAP -DMAP_REGEX -DNEWDB')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
test.foo.bar    local-ldap:test.foo.bar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=329</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=329"/>
		<updated>2013-08-23T23:01:22Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
&lt;br /&gt;
=== build config ===&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=328</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=328"/>
		<updated>2013-08-23T22:54:59Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&lt;br /&gt;
=== LDIF ===&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
	<entry>
		<id>https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=327</id>
		<title>Mailutils:HOWTO:Sendmail MU LDAP</title>
		<link rel="alternate" type="text/html" href="https://mailutils.org/usqay/index.php?title=Mailutils:HOWTO:Sendmail_MU_LDAP&amp;diff=327"/>
		<updated>2013-08-23T21:33:02Z</updated>

		<summary type="html">&lt;p&gt;Zeus Panchenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Task''' &lt;br /&gt;
&lt;br /&gt;
* to get users database in accessible via LDAP&lt;br /&gt;
* to get multidomain (multi domains with separate (if needed) users for each domain) support in sendmail&lt;br /&gt;
&lt;br /&gt;
== LDAP ==&lt;br /&gt;
&lt;br /&gt;
=== slapd.conf ===&lt;br /&gt;
&lt;br /&gt;
=== db ldif ===&lt;br /&gt;
&lt;br /&gt;
== sendmail ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== sendmail.mc ===&lt;br /&gt;
&lt;br /&gt;
=== mailertable ===&lt;br /&gt;
&lt;br /&gt;
== mu ==&lt;br /&gt;
&lt;br /&gt;
=== config ===&lt;br /&gt;
&lt;br /&gt;
=== mailutils.rc ===&lt;br /&gt;
&lt;br /&gt;
=== pop3d ===&lt;br /&gt;
&lt;br /&gt;
=== imap4d ===&lt;br /&gt;
&lt;br /&gt;
=== maidag ===&lt;/div&gt;</summary>
		<author><name>Zeus Panchenko</name></author>
	</entry>
</feed>