1. Patch pour smbldap-useradd

Version du paquet installé

root@olivia:~# apt-cache show smbldap-tools | grep -A6 installed |tail -1
Version: 0.9.2-3
Remarque: la version 0.9.5 est disponible mais je ne tenterai pas le diable :)

Valeur du domaine pour les mails

root@olivia:~# grep mailDomain /etc/smbldap-tools/smbldap.conf 
mailDomain="davidgis.fr"

Téléchargement des patchs

Ils sont disponibles à http://www.davidgis.fr/download/smbldap-tools.patches.zip

Avant le patch : échec du mail lors de la création de compte

root@olivia:~# smbldap-useradd -a -s /bin/bash -c "John DOE" -m -P -M "jdoe" john.doe
failed to add entry: mailLocalAddress: attribute type undefined at /usr/sbin/smbldap-useradd line 508.
Il faut aussi s'assurer de ne pas avoir d'actif la ligne concernant misc dans slapd.conf
root@olivia:~# grep misc /etc/ldap/slapd.conf
#include         /etc/ldap/schema/misc.schema

Contenu du patch

root@olivia:/usr/sbin# cat smbldap-useradd.patch 
--- smbldap-useradd.orig	2010-10-11 17:25:26.000000000 +0200
+++ smbldap-useradd	2010-10-11 23:27:21.000000000 +0200
@@ -390,15 +390,15 @@ if (@userMailLocal) {
       push(@mail, $m.($domain ? '@'.$domain : ''));
     }
   }
-  push(@adds, 'mailLocalAddress' => [ @userMailLocal ]);
+#  push(@adds, 'mailLocalAddress' => [ @userMailLocal ]);
   push(@adds, 'mail' => [ @mail ]);
 }
 if (@userMailTo) {
   push(@adds, 'mailRoutingAddress' => [ @userMailTo ]);
 }
-if (@userMailLocal || @userMailTo) {
-  push(@adds, 'objectClass' => 'inetLocalMailRecipient');
-}
+#if (@userMailLocal || @userMailTo) {
+#  push(@adds, 'objectClass' => 'inetLocalMailRecipient');
+#}
 
 # Add Samba user infos
 if (defined($Options{'a'})) {

Application du patch: succès pour le mail lors de la création de compte

root@olivia:~# cd /usr/sbin/
root@olivia:/usr/sbin# patch -p0 < smbldap-useradd.patch 
patching file smbldap-useradd

tentative de création de compte

root@olivia:/usr/sbin# smbldap-useradd -a -s /bin/bash -c "John DOE" -m -P -M "jdoe" john.doe
Changing UNIX and samba passwords for john.doe
New password: 
Retype new password: 
root@olivia:/usr/sbin# smbldap-usershow john.doe
dn: uid=john.doe,ou=Users,dc=chezdavid,dc=local
objectClass: top,person,organizationalPerson,inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
cn: john.doe
sn: john.doe
givenName: john.doe
uid: john.doe
uidNumber: 1078
gidNumber: 513
homeDirectory: /home/user/john.doe
loginShell: /bin/bash
gecos: John DOE
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
displayName: John DOE
sambaSID: S-1-5-21-1415261554-1678781555-2387323355-3156
sambaPrimaryGroupSID: S-1-5-21-1415261554-1678781555-2387323355-513
mail: jdoe@davidgis.fr
sambaLMPassword: BAC14D04669EE1D1AAD3B435B51404EE
sambaAcctFlags: [U]
sambaNTPassword: FBBF55D0EF0E34D39593F55C5F2CA5F2
sambaPwdLastSet: 1286833585
sambaPwdMustChange: 1602193585
userPassword: {SSHA}Iqv8ZBcalHjwNYFr4C900yWCfVdXZkpY

2. Patch pour smbldap-usermod

Contenu du patch

--- smbldap-usermod.orig	2010-10-11 23:39:20.000000000 +0200
+++ smbldap-usermod	2010-10-12 00:10:07.000000000 +0200
@@ -237,7 +237,7 @@ if ($tmp= $Options{'M'}) {
     my @old_MailLocal;
     my @old_mail;
     @old_mail = $user_entry->get_value('mail');
-    @old_MailLocal = $user_entry->get_value('mailLocalAddress');
+#    @old_MailLocal = $user_entry->get_value('mailLocalAddress');
     if ($action eq '+') {
       @userMailLocal = &list_union(\@old_MailLocal, \@userMailLocal);
       @mail = &list_union(\@old_mail, \@mail);
@@ -246,7 +246,7 @@ if ($tmp= $Options{'M'}) {
       @mail = &list_minus(\@old_mail, \@mail);
     }
   }
-  push(@mods, 'mailLocalAddress', [ @userMailLocal ]);
+#  push(@mods, 'mailLocalAddress', [ @userMailLocal ]);
   push(@mods, 'mail' => [ @mail ]);
   $mailobj = 1;
 }
@@ -273,7 +273,7 @@ if ($tmp= $Options{'T'}) {
 if ($mailobj) {
   my @objectclass = $user_entry->get_value('objectClass');
   if (! grep ($_ =~ /^inetLocalMailRecipient$/i, @objectclass)) {
-    push(@mods, 'objectClass' => [ @objectclass, 'inetLocalMailRecipient' ]);
+#    push(@mods, 'objectClass' => [ @objectclass, 'inetLocalMailRecipient' ]);
   }
 }

Changement de l'attribut mail d'un compte

root@olivia:/usr/sbin# smbldap-usermod -M john.doe john.doe
root@olivia:/usr/sbin# smbldap-usershow john.doe | grep mail
mail: john.doe@davidgis.fr