[Freeipa-users] Change default email format
Alexander Bokovoy
abokovoy at redhat.com
Wed Aug 5 19:40:44 UTC 2015
On Wed, 05 Aug 2015, Alexander Bokovoy wrote:
>On Mon, 03 Aug 2015, Justean wrote:
>>Good morning, I was wondering if there is a way to change the way
>>freeipa builds a user's email address by default. Currently it takes
>>the username and appends the domain name but I would like it to take
>>the form firstname.lastname at domainname.com
>It is not possible to redefine email's format via configuration so you
>need to write some code. Luckily, you can amend existing code without
>touching it.
>
>Below is an example:
>-----------------------------------------------------------------------
>/usr/lib/python2.7/site-packages/ipalib/plugins/user-ext-mail-format.py
>-----------------------------------------------------------------------
>from ipalib.plugins.user import user_add
>
>def override_default_mail_cb(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
> if not 'mail' in entry_attrs:
> name = {'givenname': entry_attrs.get('givenname').lower(),
> 'sn': entry_attrs.get('sn').lower()}
> mail = "{givenname}.{sn}".format(**name)
> entry_attrs['mail'] = self.obj.normalize_and_validate_email(mail)
> return dn
>
>user_add.register_pre_callback(override_default_mail_cb, first=True)
>-----------------------------------------------------------------------
>
>What this Python code does? It adds a callback to user-add method in IPA
>that is run before other callbacks (first=True). The callback is then
>checks if mail attribute was already specified by the administrator
>when calling 'ipa user-add' (Web UI calls this for you). If not, it
>derives mail format from lower-cased versions of first and last names of
>the user (known as 'givenname' and 'sn' attributes in LDAP
>correspondingly). It then sets mail attribute to a full email format via
>self.obj.normalize_and_validate_email() function which will pick up the
>default DNS domain value and construct correct email.
>
>You need to maintain this plugin extension on all IPA masters used for
>creating users. Best way to do that is by packaging the plugin in an RPM
>and installing it on IPA masters.
>
>You also need to restart httpd service on IPA master to apply the
>plugin.
>
>It is used like this:
>
># systemctl restart httpd
># ipa user-add some.user --first Some --last User
>----------------------
>Added user "some.user"
>----------------------
> User login: some.user
> First name: Some
> Last name: User
> Full name: Some User
> Display name: Some User
> Initials: SU
> Home directory: /home/some.user
> GECOS: Some User
> Login shell: /bin/sh
> Kerberos principal: some.user at EXAMPLE.COM
> Email address: some.user at example.com
> UID: 1634400022
> GID: 1634400022
> Password: False
> Member of groups: ipausers
> Kerberos keys available: False
Actually, I realized because I gave the same user login as
'FirstName.LastName', it might be less apparent that the code works.
Let's try with another user:
# ipa user-add foo.bar --first Some --last User
--------------------
Added user "foo.bar"
--------------------
User login: foo.bar
First name: Some
Last name: User
Full name: Some User
Display name: Some User
Initials: SU
Home directory: /home/foo.bar
GECOS: Some User
Login shell: /bin/sh
Kerberos principal: foo.bar at EXAMPLE.COM
Email address: some.user at example.com
UID: 1634400023
GID: 1634400023
Password: False
Member of groups: ipausers
Kerberos keys available: False
--
/ Alexander Bokovoy
More information about the Freeipa-users
mailing list