ftpmail(1)
π ftpmail(1) β the FIFO-based Perl script that emails you when somebody uploads stuff via proftpd's TransferLog
okay bestie, welcome to the General Commands Manual corner of the internet, this is ftpmail, section 1, and she is a whole vibe π
β¨ NAME β¨
ftpmail β a FIFO-based Perl script for sending email based on proftpd TransferLog
πΈ SYNOPSIS πΈ
ftpmail [ --help ] [ --fifo fifo-path ] [ --from email-address ] [ --log
xferlog-file ] [ --recipient email-address ] [ --subject email-subject ]
[ --smtp-server server-address ] [ --attach-file ] [ --auth smtp-auth-
info-file ] [ --ignore-users regex-pattern ] [ --watch-users regex-
pattern ]
π¦ DESCRIPTION π¦
so ftpmail is a Perl script whose whole entire job is reading ProFTPD's TransferLog log entries, keeping an eye out for uploads π, and then sending an automatic email notification the second an upload happens. it's giving personal assistant energy, fr fr.
to actually use ftpmail, you set up your proftpd daemon so it writes its TransferLog to a FIFO π«Ά. then ftpmail is the FIFO-reading program that sits there and processes all those log messages for you. iconic behavior honestly.
π OPTIONS π
--helpβ shows a short usage description, and yes it lists all the available options too. cute and helpful.--attach-fileβ if you use this, a copy of the uploaded file gets included in the generated email as an attachment π. surprise! it's the file.--auth smtp-auth-info-fileβ sets the path to a file that holds your SMTP authentication info. the configured file should look exactly like this:
user username
password password
--fifo fifo-pathβ tells it the path to the FIFO thatproftpdis writing itsTransferLogto. like, this is the path you used for theTransferLogdirective in yourproftpd.conf. this parameter is REQUIRED π do not skip her.--from email-addressβ says which email address goes in theFromemail header. this parameter is REQUIRED π₯--ignore-users regex-patternβ takes a Perl regular expression. if the uploading user name matches this regex, then an email notification is NOT sent π. otherwise, an email is sent.--log xferlog-pathβ okay so because this script reads theTransferLogusing FIFOs, the actualTransferLogfile is not written by default. use this option if you want to write the normalTransferLogfile in addition to watching for uploads. two things at once, multitasking queen π--recipient email-addressβ specifies an email address to send the upload notification to. you can use this option multiple times to specify multiple recipients π. AT LEAST ONE recipient is REQUIRED.--smtp-server server-addressβ specifies the SMTP server to send the email to. this parameter is REQUIRED β--subject subjectβ set a customSubjectemail header for the email that gets sent. the defaultSubjectis:
User '$user' uploaded file '$file' via FTP
--watch-users regex-patternβ takes a Perl regular expression. if the uploading user name matches this regex, then an email notification is sent π. otherwise, no email goes out. (yes, she's the mirror-image twin of--ignore-users, iykyk.)
π FILES π
/var/log/xferlog
π AUTHORS π
ProFTPD is written and maintained by a number of people, full credits can be found on http://www.proftpd.org/credits.html
π₯ SEE ALSO π₯
Full documentation on ProFTPD, including configuration and FAQs, is available at http://www.proftpd.org/
For help/support, try the ProFTPD mailing lists, detailed on http://www.proftpd.org/lists.html
Report bugs at http://bugs.proftpd.org/
bestie, that's the whole page π go forth and get your upload notifications, no cap.
this little gem is from March 2011, and it's part of the ProFTPD family β so go say hi to the proftpd crew, they made this whole thing happen. mwah, bye π«Άβ¨
π¦ where this page comes from
- alpine 3.24: proftpd-doc 1.3.9e-r0 Β· GPL-2.0-or-later
- debian bookworm: proftpd-core 1.3.8+dfsg-4+deb12u4 Β· GPL-2.0-or-later
- debian bookworm: proftpd-core 1.3.8+dfsg-4+deb12u5 Β· GPL-2.0-or-later
- debian trixie: proftpd-core 1.3.8.c+dfsg-4+deb13u3 Β· GPL-2.0-or-later
- epel 10: proftpd-utils 1.3.9d-2.el10_3 Β· GPL-2.0-or-later
- epel 9: proftpd-utils 1.3.8d-4.el9 Β· GPL-2.0-or-later
- fedora 43: proftpd-utils 1.3.9-2.fc43 Β· GPL-2.0-or-later
- fedora 43: proftpd-utils 1.3.9d-2.fc43 Β· GPL-2.0-or-later
- fedora 44: proftpd-utils 1.3.9-3.fc44 Β· GPL-2.0-or-later
- fedora 44: proftpd-utils 1.3.9d-2.fc44 Β· GPL-2.0-or-later
- nixos 26.05: proftpd 1.3.9e
- nixpkgs unstable: proftpd 1.3.9e
- opensuse-leap 16.0: proftpd 1.3.9-bp160.1.11 Β· GPL-2.0-or-later
- opensuse-leap 16.0: proftpd 1.3.9-bp160.1.11 Β· GPL-2.0-or-later
- opensuse-leap 16.0: proftpd 1.3.9-bp160.1.11 Β· GPL-2.0-or-later
- opensuse-leap 16.0: proftpd 1.3.9-bp160.1.11 Β· GPL-2.0-or-later
- ubuntu jammy: proftpd-core 1.3.7c+dfsg-1build1 Β· GPL-2.0-or-later
- ubuntu jammy: proftpd-core 1.3.7c+dfsg-1ubuntu0.1 Β· GPL-2.0-or-later
- ubuntu noble: proftpd-core 1.3.8.b+dfsg-1build3 Β· GPL-2.0-or-later
- ubuntu noble: proftpd-core 1.3.8.b+dfsg-1ubuntu0.1 Β· GPL-2.0-or-later
- ubuntu questing: proftpd-core 1.3.9~dfsg-3
- ubuntu resolute: proftpd-core 1.3.9~dfsg-4 Β· GPL-2.0-or-later
- ubuntu stonking: proftpd-core 1.3.9d~dfsg-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms