Python脚本通过imaplib连接Gmail在服务器端无响应问题
问题分析与解决建议
问题描述
我编写了一个Python脚本,用于每日从指定Gmail邮箱下载附件,本地运行完全正常,但部署到服务器后出现异常。服务器上运行代码时,控制台仅输出Connect with IMAP后就无任何响应。
代码片段
import email import os import imaplib import socket def download_attachments(): print('Connect with IMAP') imap_server = imaplib.IMAP4_SSL('imap.gmail.com') print('Login details') username = "email@gmail.com" password = "password" print('Login to mail') try: imap_server.login(username, password) except imaplib.IMAP4.error as error: return (f'Error while login: {error}')
服务器详情
生产环境Python脚本服务器。
更新时间: 2023年1月14日 周六 下午2:55:01 CET
主机名: xxxxxxx
IP地址: xxxxxxx
系统类型: Debian GNU/Linux 11 (bullseye)
负载: 0.02 0.06 0.07 1/114 59615
硬件资源: 2 CPU | 3931 MB RAMdebug2: client_check_window_change: changed debug2: channel 0: request window-change confirm 0 debug3: send packet: type 98
最后登录时间: 2023年1月14日 周六 14:19:25,来自xxxxxxx
本系统由Ansible管理,所有本地更改将会丢失。生产环境Python脚本服务器。
更新时间: 2023年1月14日 周六 下午2:55:01 CET
主机名: xxxxxxx
IP地址: xxxxxxx
系统类型: Debian GNU/Linux 11 (bullseye)
负载: 0.02 0.06 0.07 1/114 59615
硬件资源: 2 CPU | 3931 MB RAM
排查方向与解决方法
- 网络端口连通性:服务器可能被防火墙限制,无法访问Gmail的IMAP端口(993)。在服务器执行
nc -zv imap.gmail.com 993测试连通性,若不通,联系运维开放出站993端口。 - SSL证书验证失败:Debian 11的CA证书可能未更新,导致无法验证Gmail的SSL证书。执行
apt update && apt install -y ca-certificates更新证书后重试。 - 未设置连接超时:脚本未定义超时时间,服务器网络延迟时会无限挂起。修改IMAP连接代码,添加超时参数:
imap_server = imaplib.IMAP4_SSL('imap.gmail.com', timeout=30) - Gmail安全策略拦截:若使用普通密码登录,Gmail可能阻止非信任环境的登录尝试。建议开启两步验证后使用应用专用密码,或临时允许“不太安全的应用”(不推荐长期使用)。
- DNS解析异常:服务器无法解析
imap.gmail.com域名。执行nslookup imap.gmail.com检查解析结果,若异常可更换DNS服务器(如8.8.8.8)。
内容的提问来源于stack exchange,提问作者Bartosz
相关产品推荐
相关产品推荐

