Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
.. image:: http://www.repostatus.org/badges/latest/active.svg :target: http://www.repostatus.org/#active :alt: Project Status: Active - The project has reached a stable, usable state and is being actively developed.
.. image:: https://github.com/jwodder/daemail/workflows/Test/badge.svg?branch=master :target: https://github.com/jwodder/daemail/actions?workflow=Test :alt: CI Status
.. image:: https://codecov.io/gh/jwodder/daemail/branch/master/graph/badge.svg :target: https://codecov.io/gh/jwodder/daemail
.. image:: https://img.shields.io/pypi/pyversions/daemail.svg :target: https://pypi.org/project/daemail
.. image:: https://img.shields.io/github/license/jwodder/daemail.svg?maxAge=2592000 :target: https://opensource.org/licenses/MIT :alt: MIT License
GitHub <https://github.com/jwodder/daemail>
_
| PyPI <https://pypi.org/project/daemail>
_
| Issues <https://github.com/jwodder/daemail/issues>
_
| Changelog <https://github.com/jwodder/daemail/blob/master/CHANGELOG.md>
_
daemail
(pronounced "DEE-mayl", like "e-mail" but with a D) is a Python
script built on top of python-daemon <https://pypi.org/project/python-daemon>
_ for running a normally-foreground
command in the background and e-mailing its output (by default, the combined
stdout and stderr) once it's done.
daemail
requires Python 3.6 or higher. Just use pip <https://pip.pypa.io>
_ for Python 3 (You have pip, right?) to install
daemail
and its dependencies::
python3 -m pip install daemail
::
daemail [<options>] <command> [<arg> ...]
daemail
runs command
with the given arguments in the background and
sends an e-mail once the command finishes. The sending of the e-mail is
performed by the outgoing_ library, and thus an outgoing configuration file
__
must be created with settings for sending e-mail before daemail
can be
used.
.. _outgoing: https://github.com/jwodder/outgoing __ https://outgoing.readthedocs.io/en/latest/configuration.html
-c FILE, --config FILE Read sending configuration for the outgoing
library
from FILE
; defaults to outgoing
's default
configuration file
-C DIR, --chdir DIR Change to DIR
after daemonizing but before running
the command; defaults to the current directory
-D MBOX, --dead-letter MBOX
If an error occurs when trying to send, append the
e-mail (including a description of the error) to the
file MBOX
; defaults to dead.letter
. If the
file already exists, it must be a valid mbox file.
-e ENCODING, --encoding ENCODING
Expect the stdout (and stderr, if --split
is not in
effect) of the command to be in the given encoding;
defaults to the preferred encoding returned by Python's
|getpreferredencoding|_. If decoding fails, the output
will be attached to the e-mail as an
application/octet-stream
file named "stdout
".
When ``--mime-type`` or ``--stdout-filename`` is also
given, this option has no effect other than to set the
default value for ``--stderr-encoding``.
-E ENCODING, --stderr-encoding ENCODING
Expect the stderr of the command to be in the given
encoding; defaults to the value specified via
--encoding
or its default. If decoding fails, the
stderr output will be attached to the e-mail as an
application/octet-stream
file named "stderr
".
This option only has an effect when ``--split`` is
given, either implicitly or explicitly.
--foreground, --fg Run everything in the foreground instead of daemonizing. Note that command output will still be captured rather than displayed.
-f ADDRESS, --from ADDRESS, --from-addr ADDRESS
Set the From:
address of the e-mail. The address
may be given in either the form
"address@example.com
" or "Real Name <address@example.com>
." If not specified,
daemail
will not set the From:
header and will
expect the mail command or SMTP server to do it
instead.
-F, --failure-only Only send an e-mail if the command failed to run or exited with a nonzero status
-l LOGFILE, --logfile LOGFILE
If an unexpected & unhandleable fatal error occurs
after daemonization, append a report to LOGFILE
;
defaults to daemail.log
Such an error is a deficiency in the program; please
report it!
-M MIME-TYPE, --mime-type MIME-TYPE, --mime MIME-TYPE
Attach the standard output of the command to the
e-mail as an inline attachment with the given MIME
type. The MIME type may include parameters, e.g.,
--mime-type "text/html; charset=utf-16"
. If
--stdout-filename
is not also supplied, the
attachment is named "stdout
". Implies --split
.
-n, --nonempty Do not send an e-mail if the command exited successfully and both the command's stdout & stderr were empty or not captured
--no-stdout Don't capture the command's stdout; implies --split
--no-stderr Don't capture the command's stderr; implies --split
-S, --split Capture the command's stdout and stderr separately rather than as a single stream
--stdout-filename FILENAME
Attach the standard output of the command to the e-mail
as an inline attachment with the given filename. If
--mime-type
is not also supplied, the MIME type of
the attachment is deduced from the file extension,
falling back to application/octet-stream
for
unknown extensions. Implies --split
.
-t ADDRESS, --to ADDRESS, --to-addr ADDRESS
Set the recipient of the e-mail. The address may be
given in either the form "address@example.com
" or
"Real Name <address@example.com>
."
This option is required. It may be given multiple
times in order to specify multiple recipients.
-Z, --utc Show start & end times in UTC instead of local time
Input cannot be piped to the command, as standard input is closed when daemonizing. If you really need to pass data on standard input, run a shell, e.g.::
daemail bash -c 'command < file'
or::
daemail bash -c 'command | other-command'
.. |getpreferredencoding| replace:: locale.getpreferredencoding
.. _getpreferredencoding: https://docs.python.org/3/library/locale.html#locale.getpreferredencoding
FAQs
Daemonize a command and e-mail the results
We found that daemail demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.