处理良好隐私(PGP)和电子邮件的工具。

pgp-mime的Python项目详细描述


用于构造和发送pgp/mime电子邮件的python模块和工具。

pgp_mime模块使构造和分派有符号的 和/或使用PGPRFC 3156加密的电子邮件。它使用GnuPG (通过gpgme-tool)执行加密。

安装

套餐

gentoo

我已经为Gentoo打包了pgp-mime。你需要layman和 我的wtk overlay。安装时使用:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pgp-mime

依赖性

pgp-mime是一个简单的包,在外部没有外部依赖项 python 3标准库。有许多GnuPG包装纸 对于pythonout there,但它们都不够成熟/稳定 值得安装。相反,我们使用pyassuan模块来 通过管道或插座与gpgme-tool交谈。如果这不起作用 对于您,只需替换pgp_mime.crypt模块即可处理 密码学。

手动安装

pgp-mime可用作Git存储库:

$ git clone git://tremily.us/pgp-mime.git

有关详细信息,请参见homepage。要安装签出,请运行 标准:

$ python setup.py install

用法

随着我对python越来越有经验,pgp mime已经长大了。 当前的接口要简单得多,而且 显示如何使用每个函数的docstrings。

如果您正在寻找更高级别的示例,pgp mime将包含 命令行脚本send-pgp-mime.py,允许您发送 来自命令行的签名和/或加密电子邮件。我推荐你 将gpg2与mywrappers and pinentry program一起使用,以便 从命令行输入。以下是您如何通过邮件签名 班级成绩:

$ FROM="From: Rincewind <rincewind@uu.edu>"
$ head -n2 grades
Twoflower <tf@isa.ae.cw>|9
Eric Thursley <et@pseudopolis.net>|10
$ while read LINE; do
    STUDENT=$(echo "$LINE" | cut -d '|' -f 1)
    GRADE=$(echo "$LINE" | cut -d '|' -f 2)
    HEAD=$(echo -e "$FROM\nTo: $STUDENT\nSubject: Grades")
    BODY=$(echo -e "$STUDENT,\n\nYou got a $GRADE.\n\nGood job.")
    send-pgp-mime.py -H <(echo "$HEAD") -B <(echo "$BODY") --mode sign
  done < grades

如果你能说服你的学生拿到PGP钥匙,你也可以 通过将--mode sign更改为--modesign-encrypt来加密他们的成绩。

当然,如果你对学生和学生的成绩感兴趣, 您可能还对我的pygrader包感兴趣,它使用 引擎盖下的PGP哑剧。

配置SMTP连接

pgp mime支持两种发送消息的方法(通过 pgp_mime.mail)。它可以调用系统的sendmail 等效,或使用smtplib直接连接到SMTP服务器。 因为我认为smtp会更常见,所以您可以很容易地配置 通过~/.config/smtplib.conf

建立SMTP连接
[smtp]
host: smtp.mail.uu.edu
port: 587
starttls: yes
username: rincewind
password: 7ugg@g3

所有这些字段都是可选的。host默认为localhostport默认为25。如果没有给出username,我们就不会 连接后尝试登录到SMTP服务器。

如果starttlsno或未给定,则smtp事务发生在 纯文本(尽管底层电子邮件仍将加密)。 但是,如果将username(设置为登录),pgp mime将需要 STARTTLS保护您的密码不被监听。

测试

使用nose

运行内部单元测试
$ nosetests --with-doctest --doctest-tests pgp_mime

如果python-3版本的nosetests不是 系统,您可能需要尝试以下操作:

$ nosetests-3.2 --with-doctest --doctest-tests pgp_mime

许可证

此项目在GNU General Public License Version 3或更高版本下分发。

作者

W.特雷弗·金 wking@tremily.us

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Spring、JPA和hibernate的java问题   如何将JMC(Java任务控制)连接到ubuntu中的远程JVM?   java如何将eventListener的结果存储为对象?   java在安卓中,点击一个按钮,我如何停止发送循环中发送的消息   java打开活动中的电子邮件   使用velocity模板打印JasperReports   java无法在自定义信息窗口上拨号   java如何在jsonb postgresql中查询并转换为谓词JPA   java更好地理解J2EE环境中的异常和日志记录   java打印多个文件   java无法使用API v2 Foreman 1.7.1创建主机   HTML单一提交类型按钮在java中不起作用   java调用静态方法的实例   ViewPage中替换片段的java问题   C++在java中创建数组(2D)而不初始化内部数组   java如何在NetBeans中同时更改变量名称的多个实例?   如何完成这个关于集合的java程序   java如何选择使用selenium从下拉菜单动态生成的元素?