sendmail 使用外部 smtp 服务发送邮件
在 linux
上,想要让 sendmail
使用外部 smtp
服务发送邮件,需要完成以下两件事情:
- 生成
authinfo
文件,用于存储登录外部smtp
服务器的用户信息 - 配置
sendmail.mc
文件
1. 生成 authinfo
进入 /etc/mail
目录,创建 /etc/mail/authinfo
文件,并添加如下内容:
AuthInfo:smtp.domain.cn "U:USERNAME" "P:PASSWORD" "M:PLAIN"
创建 hash map
文件
$ makemap hash authinfo < authinfo
执行完上述命令后,可以看到在 /etc/mail
目录下生成了一个名为 authinfo.db
的二进制文件,后面会将其路径配置在 sendmail.mc
文件中。
2. 配置 sendmail.mc
文件
还是在 /etc/mail
目录下,打开 sendmail.mc
文件,进行如下修改:
2.1 取消下面这一行的注释,并配置你自己的外部 smtp
服务器地址:
"dnl define(`SMART_HOST', `smtp.your.provider')dnl"
如下所示:
define(`SMART_HOST', `smtp.domain.cn')dnl
在上述配置行下面添加如下几行内容:
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl
FEATURE(`authinfo', `hash -o /etc/mail/authinfo.db')dnl
注意: 上面指定的 smtp
端口是 587
,如果与实际情况不符,应进行更改,比如,改为 25
或其他。
2.2 取消下面这几行的注释:
define(`confAUTH_OPTIONS', `A p')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
2.3 安装 sendmail-cf
工具,用于重新生成配置文件
$ yum install -y sendmail-cf
2.4 重新生成配置文件
$ /etc/mail/make
2.5 重启 sendmail
服务
$ systemctl restart sendmail
3 邮件发送示例
$ sendmail -f"user@domain.cn" -t
Subject: Hello
From: user@domain.cn
To: person@xxx.cnThis is a test.
.
上面指定了 -f
参数,我认为是有必要的,因为从 sendmail
的运行日志来看,如果不指定的话,可能会出现外部 smtp
服务器无响应的情况。
若在执行上述命令发送邮件时出现卡住的感觉,则需查看 sendmail
运行日志来确认问题,如下所示:
$ systemctl status sendmail
● sendmail.service - Sendmail Mail Transport AgentLoaded: loaded (/usr/lib/systemd/system/sendmail.service; disabled; vendor preset: disabled)Active: active (running) since Wed 2022-10-26 08:03:45 CST; 6s agoProcess: 16736 ExecStart=/usr/sbin/sendmail -bd $SENDMAIL_OPTS $SENDMAIL_OPTARG (code=exited, status=0/SUCCESS)Process: 16731 ExecStartPre=/etc/mail/make aliases (code=exited, status=0/SUCCESS)Process: 16728 ExecStartPre=/etc/mail/make (code=exited, status=0/SUCCESS)Main PID: 16745 (sendmail)Tasks: 1 (limit: 832684)Memory: 8.8MCGroup: /system.slice/sendmail.service└─16745 sendmail: accepting connections10月 26 08:02:45 CentOS-8 systemd[1]: Starting Sendmail Mail Transport Agent...
10月 26 08:02:45 CentOS-8 sendmail[16736]: My unqualified host name (CentOS-8) unknown; sleeping for retry
10月 26 08:03:45 CentOS-8 sendmail[16736]: unable to qualify my own domain name (CentOS-8) -- using short name
...
从上述日志中可以发现,sendmail
有报错信息,即:
10月 26 08:02:45 CentOS-8 sendmail[16736]: My unqualified host name (CentOS-8) unknown; sleeping for retry
10月 26 08:03:45 CentOS-8 sendmail[16736]: unable to qualify my own domain name (CentOS-8) -- using short name
该问题的解决方法是在 /etc/hosts
文件中加入主机名 'CentOS-8'
的解析配置项,即:
127.0.0.1 localhost.localdomain localhost CentOS-8
参考资料
- https://community.webcore.cloud/tutorials/how_to_configure_sendmail_to_use_an_smtp_relay/
- https://help.thorntech.com/docs/sftp-gateway-classic/routing-sendmail-through-external-smtp-relay/
sendmail 使用外部 smtp 服务发送邮件相关推荐
- Nagios监控之9:利用sendmail使用第三方SMTP服务发送邮件报警
使用Centos系统自带的sendmail服务作为客户端,使用第三方SMTP服务发送邮件报警. 此功能是在nagios服务正常安装运行的基础上实现的;因此要先安装好基本的nagios运行环境,这个可以 ...
- wordpress配置SMTP服务发送邮件
使用SMTP服务发送邮件,需要使用一个插件:http://wordpress.org/extend/plugins/wp-mail-smtp/ 下载完成以后解压到plugin目录,然后在插件中启用这个 ...
- Scala通过office365的SMTP服务发送邮件
问题描述 最近项目中需要用到office365发送mirror邮件,并且必须要用scala代码解决 以下是scala发送邮件的代码 所用到jar的pom是 <dependency>< ...
- Python 使用第三方 SMTP 服务发送邮件(qq邮箱)
原文链接:http://www.runoob.com/python/python-email.html Python SMTP发送邮件 SMTP(Simple Mail Transfer Protoc ...
- 通过126邮箱SMTP服务发送邮件到指定邮箱
测试环境清单:smtplib函数库 Python3.7 Windows10 程序源码 import smtplib from email.header import Header from email ...
- [计算机网络] C++模拟telnet登陆SMTP服务发送邮件过程
在百度文库中的<使用telnet协议收发邮件>,我们可以很清楚地看到如何通过telnet来进行发送邮件,下面是一些需要用到的命令,通过以下命令可以很容易实现邮件发送功能.为了更好地理解其中 ...
- java 163邮件发送 ssl协议失败_163邮箱开启SMTP服务发送邮件出现535错误的解决方法...
摘要: 用老的163邮箱可以直接设置SMTP发送邮件,使用新注册的却不行!折腾了几个小时后终于找到了方法,然后destoon就可以成功的发送邮件了..... 好久没有写关于destoon网站管理系统的 ...
- C#使用QQ邮箱SMTP服务发送邮件
开启邮箱的SMTP服务 进入QQ邮箱->设置->账户->开启POP3/SMTP服务,通过发短信开通后会获取一个授权码,记得保存授权码,在程序中要使用 邮件发送代码 /// <s ...
- Windows下登录smtp服务发送邮件
首先要把登陆邮箱的用户名和密码用base64_encode加密 可以用这个网站在线加密http://tool.chinaz.com/Tools/base64.aspx 然后开始 telent smtp ...
最新文章
- 137% YOLOv3加速、10倍搜索性能提升!百度飞桨推出模型压缩神器
- Eclipse删除文件的恢复(转)
- mysql8.0.15调优_Mysql 8.0 参数调优
- 普林斯顿公开课 算法2-2:选择排序
- Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- 计算机应用基础考试试题,2017计算机应用基础考试试题及答案
- keil教程之创建基础软件工程
- 汽车启动/停止系统电源方案
- 短信营销 (php示例)
- 智方8000系汽车配件进销存管理系统 襄樊石开软件公司
- 输入的产品无法再此计算机,一键重装系统时遇到“安装程序无法将Windows配置为在此计算机的硬件上运行”...
- “猫”和路由器是一个东西吗?
- 基于Python实现可以进制转换和计算阶乘的科学计算器
- ap mt7260a 华硕_华硕(ASUS)路由器AP模式设置_华硕路由器当无线AP设置-192路由网
- __attribute__((section(”XXXX“)))的编译属性---section
- Java数据结构之无向图
- 基于DYDX闪电贷在Cofix和Uniswap之间套利
- 来自:www.hoopchina.com 作者:儿童节 《雄心一万丈》
- User: root is not allowed to impersonate anonymous (state=08S01,code=0)
- Python 逻辑运算
热门文章
- 二叉树 php,PHP数据结构与算法:二叉树
- linux打开开发者权限,在UOS系统中关闭开发者模式和在UOS个人版中打开开发者模式...
- 查看mysql数据库引擎
- 解决报错 PHP TP5框架 .env 文件产生问题如:Fatal error: Uncaught think\exception\ErrorException: in....
- C++ thread用法总结(整理)
- 这个世界只有一种病,那就是贫穷!
- Logback 日志打印格式思考
- DELPHI 三层显示error loading midas.dll
- Quartus16怎么修改IP核
- 基于仿真的优化 matlab ansys,桁架结构优化的MATLAB和ANSYS联合仿真