FreeIPA Notification
Notify IPA Users for password expiration and locked users to admin
Required packages:
- krb5-devel
- python3-pip
- python3-virtualenv (Optional)
-
Create a new role for notifier
ipa role-add --desc "Notification agent role" "Notification Agent"
-
Add privileges to the role
ipa role-add-privilege "Notification Agent" --privileges="User Administrators" ipa role-add-privilege "Notification Agent" --privileges="Group Administrators" ipa role-add-privilege "Notification Agent" --privileges="Password Policy Readers"
-
Create a new service and assign the role to this service
ipa service-add NOTIFY/ipa1.example.com ipa role-add-member "Notification Agent" --services="NOTIFY/ipa1.example.com@EXAMPLE.COM" ipa service-allow-retrieve-keytab "NOTIFY/ipa1.example.com@EXAMPLE.COM" --hosts=ipa1.example.com
-
Obtain a keytab with fix permissions
ipa-getkeytab -s ipa1.example.com -p "NOTIFY/ipa1.example.com@EXAMPLE.COM" -k ~/.priv/notify.keytab chmod -R 600 ~/.priv
-
(Optional) Create a new virtual env and activate it
mkdir /opt/ipa-notify virtualenv -p python3 /opt/ipa-notify/venv source /opt/ipa-notify/venv/bin/activate
-
Install this package:
pip3 install ipa-notify
-
Run the command in
noopmode for a successful user listing/opt/ipa-notify/bin/ipa-notify --server ipa1.example.com -p "NOTIFY/ipa1.example.com@EXAMPLE.COM" -k ~/.priv/notify.keytab \ --limit 10 --groups users --check-expiration --noop
-
Create a script includes the command with your parameters with proper permissions under
/usr/local/sbin/ -
Add a crontab entry. For example
0 0 * * * root /usr/local/sbin/ipa_notify.sh &>> /var/log/ipa_notify.log -
(Optional) You can create an email template folder and overwrite the message content. You can change the content but do not change file names or variable names. Template should start with
Subject:keyword and there has to be new line between the subject and body. Please test your template before using.
$ python3 -c 'import ipa_notify;print(ipa_notify.__file__)'
/usr/local/lib/python3.6/site-packages/ipa_notify/__init__.py
$ cp -r /usr/local/lib/python3.6/site-packages/ipa_notify/templates ./mytemplates
# edit the content
$ ipa-notify ... --templates ./mytemplates
Parameters:
$ ipa-notify --help
usage: ipa-notify [-h] [--server SERVER] [--verify-ssl] [--no-verify-ssl] [--principal PRINCIPAL] [--keytab KEYTAB] [--groups GROUPS [GROUPS ...]] [--limit LIMIT] [--smtp-host SMTP_HOST] [--smtp-port SMTP_PORT]
[--smtp-security {none,STARTTLS,SSL}] [--smtp-user SMTP_USER] [--smtp-pass SMTP_PASS] [--smtp-from SMTP_FROM] [--admins ADMINS [ADMINS ...]] [--noop] [--check-expiration] [--check-locked] [--templates TEMPLATES]
[--log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}]
IPA Notifier
optional arguments:
-h, --help show this help message and exit
--server SERVER ipa server fqdn (default: ipa.domain.com)
--verify-ssl verify ipa connection SSL cert (default) (default: True)
--no-verify-ssl do not verify ipa connection SSL cert (default: True)
--principal PRINCIPAL
user principal for kerberos authentication (default: admin@DOMAIN.COM)
--keytab KEYTAB keytab path (default: /tmp/user.kt)
--groups GROUPS [GROUPS ...]
list of user groups to check (default: ['users'])
--limit LIMIT number of days before notifying a user (default: 5)
--smtp-host SMTP_HOST
smtp host for sending email (default: localhost)
--smtp-port SMTP_PORT
smtp port for sending email (default: 25)
--smtp-security {none,STARTTLS,SSL}
smtp port for sending email (default: none)
--smtp-user SMTP_USER
smtp user login (default: )
--smtp-pass SMTP_PASS
smtp user password (default: )
--smtp-from SMTP_FROM
smtp from email address (default: noreply@domain.com)
--admins ADMINS [ADMINS ...]
admin user(s) email(s) to notify about locked users (default: admin@domain.com)
--noop no operation mode. Do not send emails (default: False)
--check-expiration Check password expirations for users (default: False)
--check-locked Check locked out users (default: False)
--templates TEMPLATES
Custom email template folder (default: )
--log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}
log level (default: INFO)
Metadata
Release files for ipa-notify 0.3.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ipa-notify-0.3.13.tar.gz | 13.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ipa_notify-0.3.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.2 kB
Release files / ipa-notify-0.3.13.tar.gz
| Download URL | ipa-notify-0.3.13.tar.gz |
|---|---|
| Size | 13.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
24b487c620c239c8d4983ef337be80a50dce54c5b8141b7a8169ca247b82b049
|
|
BLAKE2b-256 checksum How to use checksums |
ef258e041ea6be4c1576b2a489a7ca7805ef94bd38e745bb1716c2fd7bc9447b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5
|
Release files / ipa_notify-0.3.13-py3-none-any.whl
| Download URL | ipa_notify-0.3.13-py3-none-any.whl |
|---|---|
| Size | 15.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
65e80802d8befdd870529c0b3d0683fe5ffb55d5a11682b512cafa3072004abf
|
|
BLAKE2b-256 checksum How to use checksums |
dea1a274463313aab89f7b9ca4418551b72b7dec5cf94323b4e3f70daba9eb9d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5
|
Security for ipa-notify 0.3.13
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.