Galaxy 生信平台(四):邮件与管理员配置

前几天看到中山大学和国家基因库合作开发的 Translatome Workbench 翻译组学可视化在线数据分析平台 (db.cngb.org/galaxy/) 的推送信息,也上去看了一下,工具和教程都做的非常用心,这也算是国内为数不多的 Galaxy 研究中的一抹亮色了。
 
本文章作为 Galaxy 生信平台的第四篇,继续来带大家学习了解一下这个开源平台,希望大家有所收获。

我在《QQ 邮箱设置自定义域名邮箱》中给大家展示了,如何通过自己申请的域名+ QQ 邮箱打造一个高端大气的个人专业邮箱。今天来了一下如何把自定义的 QQ 域名邮箱应用到 Galaxy 生信分析平台中。

1. Galaxy 邮箱与管理员

Galaxy Project 是一个基于云计算背景下的开源生物信息分析项目,而 Galaxy 平台则是这个项目的集大成者。作为一个用于生产环境中,可以满足多用户使用的在线平台,Galaxy 的邮箱服务可谓是至关重要,尤其对于普通用户常见的登录限制、注册激活、密码重置与修改找回、页面错误报告等琐碎问题的处理上,它可以大大减轻系统管理员的工作量。

Galaxy 收发邮件的核心代码主要位于以下两个程序,其核心模块则是 util.send_mail,一个基于 emailsmtplib 库进行封装的函数,具体源码,感兴趣的可以去研究一下。

  • lib/galaxy/util/init.py

  • lib/galaxy/managers/users.py

  • lib/galaxy/webapps/galaxy/controllers/user.py

所以,在设置 Galaxy 邮箱服务前,我们先来了解一下如何在 Python 中基于 emailsmtplib 库进行 QQ 邮件的发送。

2. 基于 Python 的邮件收发

首先我们要知道用 python 代理登录 qq 邮箱发邮件,是需要更改自己 qq 邮箱设置的。在这里大家需要做两件事情:邮箱开启 SMTP 功能 、获得授权码,步骤如下。

首先,在打开的 QQ 邮箱中,进入"设置"

53a1ed75-4f66-4f6c-a40f-12e39e3ee418.png
第二,在邮箱设置界面,打开 “帐户”
54ddfb81-9402-4d8c-bd3d-344308d1407f.png
第三,往下找到 POP3/IMAP/… 服务,点击 POP3/SMTP 所在行,右侧的 “开启”
8d0ba871-ccde-4f13-931b-9ad6ee06ff7d.png
如果是第一次开启 POP3/SMTP 这时系统会要求通过密保手机发送一条特别内容的短信,待手机上短信发送完成后,点击 “我已发送”
07c8c156-a101-4e23-97ff-7fa194fa9a64.png
这样就可以得到 POP3/SMTP 服务的授权码了。
b8e3b665-d4ae-4ec6-b164-4f5d11ffa5f5.png
回到上页,可以看到 POP3/SMTP 服务已经处于开启状态。同样的,如果忘记了授权码,可以点击温馨提示中"生成授权码"的链接重新再次生成。
53e51edf-7497-4c09-a2dd-7466385f100f.png
SMTP 服务和授权码都有了,接下来我们要基于 python3 的 emailsmtplib 库实现一个简单的发邮件功能。
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL

#qq 邮箱 smtp 服务器
host_server = 'smtp.qq.com'
#sender_login 为发件人的域名邮箱(或者 QQ 号码)
sender_login = 'shenweiyan@bioitee.com'
#pwd 为 qq 域名邮箱的授权码
pwd = 'r***h***b'
#发件人的邮箱
sender_mail = 'shenweiyan@bioitee.com'
#收件人邮箱
receiver_mail = 'ishenweiyan@gmail.com'
#邮件的正文内容
mail_content = '你好,我是沈维燕,现在在进行一项用 python 登录 qq 邮箱发邮件的测试'
#邮件标题
mail_title = '沈维燕的邮件'

#ssl登录
smtp = SMTP_SSL(host_server)
#set_debuglevel() 是用来调试的。参数值为 1 表示开启调试模式,参数值为 0 关闭调试模式
smtp.set_debuglevel(1)
smtp.ehlo(host_server)
smtp.login(sender_login, pwd)

msg = MIMEText(mail_content, "plain"'utf-8')
msg["Subject"] = Header(mail_title, 'utf-8')
msg["From"] = sender_mail
msg["To"] = receiver_mail
smtp.sendmail(sender_mail, receiver, msg.as_string())
smtp.quit()
fbf6e768-d41b-40f2-9c87-afec9bb18a6d.png

3. 配置 Galaxy 邮件服务

有了上一步 python 发送邮件的经验,接下来我们只需要修改一下 Galaxy 的主配置文件 config/galaxy.yml 即可:
galaxy:
    smtp_server: 'smtp.qq.com'
    smtp_username: 'shenweiyan@bioitee.com'
    smtp_password: 'h**z***j'
    smtp_ssl: true
    error_email_to: 'shenweiyan@bioitee.com'
    email_from: 'shenweiyan@bioitee.com'

配置完成后,重启 Galaxy 服务。


4. 管理员与强制登录

如果你只想把你个人部署的 Galaxy 提供给特定的人使用,例如同一个实验室的其他小伙伴,你可以把 Galaxy 的注册功能关闭,并设置只能通过管理员创建新账号。
galaxy:
    # 设置 Galaxy 管理员账号,如有多个管理员,请用逗号分隔
    admin_users: 'shenweiyan@bioitee.com'
    # 强制所有用户均需要注册登录才能使用
    require_login: false
    # 开启用户激活功能(如果设置为"false",则帐户自注册以来一直处于活动状态)
    user_activation_on: true
    # 设置激活有效时长(小时)
    activation_grace_period: 3
    # 允许未注册的用户创建新帐户(否则,必须由管理员创建)
    allow_user_creation: false
    # 允许管理员删除已经注册的账号
    allow_user_deletion: true
    # 允许管理员模拟其他用户登录,进行问题追踪
    allow_user_impersonation: true
d78695bf-10e8-4fb9-987f-414669c408b6.png


5. 一些测试

配置好了 Galaxy 邮箱服务,我们来测试一下注册激活验证和重置密码。
de0ef6fd-f310-4911-bf92-91fcdbabf36d.png
Galaxy 在账号未激活状态下,登录后的界面


85d8e819-0afb-40a0-b62d-53f19ab220e3.png
Galaxy 用户注册,通过邮箱实现账号激活


0aafab77-6ad3-4ff8-931a-e83276e968b2.png
通过邮箱实现 Galaxy 用户密码修改

到这里,Galaxy 的邮件服务和管理员设置就完成了,如果想要更改 Galaxy 默认的邮件内容(例如把英文改成中文,或者增删邮件发送内容),可以仔细去研究一下它的源码,也欢迎留言或者添加作者微信交流。最后总结一句,就是,QQ 域名邮箱的本质还是 QQ 邮箱,因此,它收发邮箱的服务器设置依然是 qq.com,不管您最终选择 QQ 邮箱还是 QQ 域名邮箱,它们的配置原理都是一样。



往期精彩:

ad743ef9-e7a8-4d36-a4a6-b7b3fd237323.gif


本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

posted @ 2020-02-22 06:00  章鱼猫先生  阅读(138)  评论(0编辑  收藏  举报