Skip to main content

FreeIPA Notification

Upload Python Package

Notify IPA Users for password expiration and locked users to admin

Required packages:

  • krb5-devel
  • python3-pip
  • python3-virtualenv (Optional)
  1. Create a new role for notifier

    ipa role-add --desc "Notification agent role" "Notification Agent"
    
  2. 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"
    
  3. 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
    
  4. 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
    
  5. (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
    
  6. Install this package:

    pip3 install ipa-notify
    
  7. Run the command in noop mode 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
    
  8. Create a script includes the command with your parameters with proper permissions under /usr/local/sbin/

  9. Add a crontab entry. For example 0 0 * * * root /usr/local/sbin/ipa_notify.sh &>> /var/log/ipa_notify.log

  10. (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)

Source distribution for ipa-notify 0.3.13
File Size Uploaded Provenance
ipa-notify-0.3.13.tar.gz 13.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ipa-notify 0.3.13
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page