-Python module and for constructing and sending PGP/MIME email.
+Python module and tools for constructing and sending PGP/MIME email.
The ``pgp_mime`` module makes it easy to construct and dispatch signed
-and/or encrypted email using PGP_ and :RFC:`3156`. It uses GnuPG_ to
-perform the cryptography.
+and/or encrypted email using PGP_ and :RFC:`3156`. It uses GnuPG_
+(via `gpgme-tool`_) to perform the cryptography.
Installation
============
------------
``pgp-mime`` is a simple package with no external dependencies outside
-the Python 3 standard library. There are a number of GnuPG_ wrappers
+the Python 3.3 standard library. There are a number of GnuPG_ wrappers
for python `out there`__, but none of them seem mature/stable enough
-to be worth installing. Instead, we use the ``subprocess`` module to
-call ``gpg`` directly. If this isn't working for you, you need only
-replace the ``*_bytes`` commands which handle the cryptography.
+to be worth installing. Instead, we use the `pyassuan`_ module to
+talk to `gpgme-tool`_ over pipes or sockets. If this isn't working
+for you, you need only replace the ``pgp_mime.crypt`` module to handle
+the cryptography.
__ wrappers_
+It would be awkward to backport ``pgp-mime`` to earlier versions of
+Python, because versions before Python 3.3 lack sendmsg_ and recvmsg_,
+and Python 2.7 doesn't even have that pass_fds option for Popen. This
+makes it much harder to pass file descriptors to the `gpgme-tool`
+process.
+
Installing by hand
------------------
encrypt their grades by changing ``--mode sign`` to ``--mode
sign-encrypt``.
+Of course, if you're interested in working with students and grades,
+you might also be interested in my `pygrader`_ package, which uses
+pgp-mime under the hood.
+
Configuring the SMTP connection
-------------------------------
``pgp_mime.mail``). It can either call your system's ``sendmail``
equivalent, or connect directly to an SMTP_ server using ``smtplib``.
Since I imagine SMTP will be more common, you can easily configure
-your SMTP connection via ``~/.config/pgp-mime.conf``::
+your SMTP connection via ``~/.config/smtplib.conf``::
[smtp]
host: smtp.mail.uu.edu
Run the internal unit tests using nose_::
- $ nosetests --with-doctest --doctest-tests pgp-mime
+ $ nosetests --with-doctest --doctest-tests pgp_mime
If a Python-3-version of ``nosetests`` is not the default on your
system, you may need to try something like::
- $ nosetests-3.2 --with-doctest --doctest-tests pgp-mime
+ $ nosetests-3.3 --with-doctest --doctest-tests pgp_mime
Licence
=======
======
W. Trevor King
-wking@drexel.edu
+wking@tremily.us
.. _PGP: http://en.wikipedia.org/wiki/Pretty_Good_Privacy
.. _Gentoo: http://www.gentoo.org/
.. _layman: http://layman.sourceforge.net/
.. _wtk overlay: http://blog.tremily.us/posts/Gentoo_overlay/
.. _wrappers: http://wiki.python.org/moin/GnuPrivacyGuard
+.. _pyassuan: http://blog.tremily.us/posts/pyassuan/
+.. _gpgme-tool:
+ http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=blob;f=src/gpgme-tool.c;hb=HEAD
+.. _Popen: http://docs.python.org/py3k/library/subprocess.html#subprocess.Popen
+.. _sendmsg: http://docs.python.org/dev/library/socket.html#socket.socket.sendmsg
+.. _recvmsg: http://docs.python.org/dev/library/socket.html#socket.socket.recvmsg
.. _Git: http://git-scm.com/
.. _homepage: http://blog.tremily.us/posts/pgp-mime/
.. _wrappers and pinentry program: http://blog.tremily.us/posts/gpg-agent/
+.. _pygrader: http://blog.tremily.us/posts/pygrader/
.. _SMTP: http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
.. _STARTTLS: http://en.wikipedia.org/wiki/STARTTLS
.. _GnuPG: http://www.gnupg.org/