Sendmail是一个开源邮件传输代理(MTA),用于使用服务器或使用shell命令路由电子邮件。它包括用于邮件传输和电子邮件传递的SMTP(简单邮件传输协议)。大多数系统管理员更喜欢使用 Sendmail 服务器作为 MTA,而不是其他 MTA。您还可以使用Sendmail服务器通过外部SMTP服务器(如Gmail,Amazon SES,MailChimp等)发送电子邮件。
在 Ubuntu 22.04 LTS Jammy Jellyfish 上安装 Sendmail
第 1 步。首先,通过在终端中运行以下命令,确保所有系统软件包都是最新的。apt
sudo apt update sudo apt upgrade sudo apt install wget apt-transport-https gnupg2 software-properties-common
第 2 步。在 Ubuntu 22.04 上安装 Sendmail。
默认情况下,Sendmail 在 Ubuntu 22.04 基本存储库中可用。现在运行以下命令,将最新版本的 Sendmail 安装到 Ubuntu 系统:
sudo apt install sendmail
第 3 步。配置主机名。
使用以下命令查找主机名:
hostname
接下来,使用您喜欢的文本编辑器打开文件:
nano /etc/hosts
在以 开头的行上,将 添加到末尾,如下所示。这应该在一行上:127.0.0.1
hostname
127.0.0.1 localhost your-hostname
第4步。配置 SMTP。
现在我们在目录中创建一个用于 SMTP 配置的新目录:/etc/mail
sudo mkdir /etc/mail/authinfo
为文件设置正确的权限:
sudo chmod -R 700 /etc/mail/authinfo
然后,在新创建的目录中为 SMTP 身份验证创建一个新文件:
cd /etc/mail/authinfo nano smtp-auth
添加以下行,并将电子邮件地址替换为您的登录电子邮件,将密码替换为您的密码:
AuthInfo: "U:root" "I:your-email-address" "P:your-strong-password"
保存并退出文件,然后,为上述创建的身份验证创建哈希数据库映射:
sudo makemap hash smtp-auth < smtp-auth
第5步。配置 SMTP。
现在我们切换到 Sendmail 配置目录并编辑文件:sendmail.mc
cd /etc/mail nano sendmail.mc
在该行之后添加以下配置,并替换为您的 SMTP 主机名:MAILER _DEFINITIONS
smtp-host
define(`SMART_HOST',`[smtp-host]')dnl define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl 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 FEATURE(`authinfo',`hash -o /etc/mail/authinfo/smtp-auth.db')dnl
第 6 步。重建发送邮件配置。
现在使用以下命令重新构建 Sendmail 配置:
cd /etc/mail sudo make
完成后,现在我们重新启动 Sendmail 服务:
sudo systemctl restart sendmail
步骤 7.用于发送电子邮件的简单PHP脚本。
现在,我们在Web文档根目录中创建一个PHP文件,其中包含以下内容。更改您的收件人电子邮件地址,并根据需要保持原样以进行测试,l 使用发件人电子邮件地址:send-email.php
$to_email
$subject
$body
$from_emai
nano send-email.php
添加以下示例 PHP 代码以发送电子邮件:
<?php $to_email = "recipient@idroot.us"; $subject = "Simple Email Test via PHP"; $body = "Hi,\n This is test email send by PHP Script"; $headers = "From: sender@idroot.us"; if ( mail($to_email, $subject, $body, $headers)) { echo("Email successfully sent to $to_email..."); } else { echo("Email sending failed..."); }?>
保存并关闭文件,然后在 Web 浏览器中通过访问对其进行测试,或者只需从命令行执行它,如下所示:
php send-email.php
输出:
Email successfully sent to recipient@idroot.us
感谢您使用本教程在 Ubuntu 22.04 LTS Jammy Jellyfish 系统上安装 Sendmail。有关其他帮助或有用信息,我们建议您查看 Sendmail 官方网站。