This GitHub Action automates password security reviews by scanning an Excel file for upcoming password review dates and old passwords that haven’t been updated in a while. It sends a styled HTML email summary to configured recipients every 24 hours ( 10:00 AM Romanian Hour ).
- Features
- Project Structure
- Screenshots
- Setup Instructions
- GitHub Secrets Required
- SMTP Configuration
- Automation Schedule
- Email Preview
- Technologies Used
- License
- Contact
- ✅ Automatically checks an Excel file daily ( data/data.xlsx )
- ✅ Categorizes passwords:
- Due within 1 day
- Due within 3 days
- Due within 1 week
- Old passwords that haven’t been updated in over 6 months
- ✅ Sends a beautiful HTML email with all matching entries
- ✅ Built with GitHub Actions, Python, and open-source tools
.
├── .github/workflows/
│ └── reminder.yml # GitHub Action: daily trigger
├── assets/
│ └── email_preview.gif # An example of the email you’ll receive
│ └── github_action_run.png # How it looks when the GitHub Action triggers
│ └── excel_data_preview.png # How data looks
├── config/
│ └── email_recipients.yaml # Email list
├── data/
│ └── data.xlsx # Main Excel file with password info
├── scripts/
│ └── send_email.py # Main script that sends the email
├── requirements.txt # Python dependencies
└── README.md # This file that you are reading right now
Here’s an example of the email you’ll receive:
This is how it looks when the GitHub Action triggers:
This is how data in excel looks:
git clone https://github.com/axbecher/PasswordCheckup.git
cd PasswordCheckup
Update the file: config/email_recipients.yaml
recipients:
- your.email@example.com
- bob@example.org
Place your updated data.xlsx
in the data/
folder.
The file must include at least these columns (exactly):
Service_Website
Next_Review_Date
Date_Changed
LastPass_ID
Changed_By
Use the format: DD/MM/YYYY for all date columns, in our case those are Next_Review_Date
and Date_Changed
.
Go to Settings > Secrets and variables > Actions and add:
Name | Description |
---|---|
EMAIL_USER |
The email used to send notifications (e.g., system@domain.com) |
EMAIL_PASSWORD |
The SMTP password or app password for that email address |
This project allows you to configure the SMTP host.
Go to scripts/send_email.py and update:
Name | Description |
---|---|
%SMTP_HOST% |
SMTP server hostname (e.g., mail.domain.com , smtp.gmail.com ) |
This project is set up to allow manual triggering by default via the "Run workflow" button in GitHub Actions.
If you'd like the workflow to run automatically every 24 hours at 08:00 UTC, you need to:
- Open the file:
/.github/workflows/reminder.yml
- Uncomment the
schedule
section:
on:
schedule:
- cron: '0 8 * * *' # runs daily at 08:00 UTC
workflow_dispatch:
The email contains:
- Summary per time frame (1 day, 3 days, 1 week, old passwords ( 90 days / 3 months ))
- Clean table format
- Footer with a link to LastPass Vault
- Python 3.11
- Pandas
- openpyxl
- GitHub Actions
- SMTP
This project is licensed under the MIT License.
For questions or improvements, feel free to open an issue or PR.