WorkingDirectory is required to set the cwd to the project dir for
relative paths like ./state. It was accidentally removed in a previous
edit.
Changes:
- Add WorkingDirectory= to [Service] section
OnFailure directive must be in [Unit], not [Service], for systemd
user services to recognize it.
Changes:
- Move OnFailure from [Service] to [Unit] in email_forwarder.service
Ensure ./state resolves to project_dir/state by setting WorkingDirectory
to the absolute PROJECT_DIR path.
Changes:
- Add WorkingDirectory= to email_forwarder.service
Wrap ExecStartPost in /bin/sh -c to enable variable expansion for
UPTIME_SUCCESS_URL. Add EnvironmentFile to load vars from .env.
Changes:
- Update ExecStartPost to use shell for expansion
- Add EnvironmentFile=/.env to service
- Update fail service ExecStart similarly
Convert email_forwarder.py to a package with __main__.py for module execution.
Update systemd service to use -m email_forwarder.
Configure pyproject.toml to exclude state/ from packaging.
Changes:
- Create email_forwarder/ package with __init__.py and __main__.py
- Move main script to email_forwarder/email_forwarder.py
- Update ExecStart to python -m email_forwarder
- Add setuptools config to exclude state/ directory
- Rename main.py to email_forwarder.py for better readability
- Update systemd service to use in ExecStart and EnvironmentFile,
remove WorkingDirectory to fix expansion issues
- Update install.sh and README references
- Drop-in sets PROJECT_DIR for runtime expansion
Changes:
- File rename: main.py -> email_forwarder.py
- Service: ExecStart and EnvironmentFile now use
- Docs: Updated to reflect new script name
Add core IMAP forwarding logic with time-based searches and Message-ID
deduplication to prevent duplicates in destination mailbox.
Changes:
- Implement SINCE-based email search using last_run.txt for incremental forwarding
- Add Message-ID extraction and IMAP checks for deduplication
- Configure systemd user services with drop-in overrides for portability
- Integrate Uptime Kuma pings for monitoring
- Set up virtual environment for dependency isolation
- Update documentation and configuration templates