Linux服务器自动发送邮件
一、安装sendmail和mailx
yum -y install sendmail mailx
二、在qq邮箱官网生成授权码
三、运行如下脚本
smtp-auth-password为生成的授权码
#!/bin/bash
###########################################################
# Script Name: addSmtpConf.sh
# Description: SMTP Configuration Script
# - Automatically retrieves QQ Mail SSL certificate
# - Configures NSS certificate database
# - Updates mail client configuration
# Author: XXX
# Created: 2025-04-02
# Version: 1.1
# Usage:
# ./addSmtpConf.sh
# Requires root privileges
############################################################ Start the sendmail service
systemctl start sendmail# Configuration variables
CERT_DIR="/root/.certs"
CERT_FILE="${CERT_DIR}/qq.crt"
MAILRC="/etc/mail.rc"# Create certificate directory if not exists
if [ ! -d "${CERT_DIR}" ]; thenmkdir -p "${CERT_DIR}"echo "Created certificate directory: ${CERT_DIR}"
fi# Retrieve QQ mail SSL certificate
echo "Fetching SSL certificate from smtp.qq.com..."
if ! echo | openssl s_client -connect smtp.qq.com:465 -servername smtp.qq.com 2>/dev/null | \sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' > "${CERT_FILE}"
thenecho "Error: Failed to retrieve certificate"exit 1
fi# Add certificates to NSS database
for cert_name in "GeoTrust SSL CA" "GeoTrust Global CA"; docertutil -A -n "${cert_name}" -t "TC,," -d "${CERT_DIR}" -i "${CERT_FILE}" >/dev/null 2>&1
done
echo "Certificates added to NSS database:"
certutil -L -d "${CERT_DIR}"# Mail configuration parameters
declare -A MAIL_CONFIG=(["from"]="?????????@qq.com"["smtp"]="smtps://smtp.qq.com:465"["smtp-auth-user"]="?????????@qq.com"["smtp-auth-password"]="????????????????"["ssl-verify"]="ignore"["nss-config-dir"]="/root/.certs"["smtp-auth"]="login"
)# Update mail configuration
echo "Checking mail configuration..."
for key in "${!MAIL_CONFIG[@]}"; dovalue="${MAIL_CONFIG[$key]}"config_line="set ${key}=${value}"# Check if configuration existsif ! grep -qF "${config_line}" "${MAILRC}" 2>/dev/null; thenecho "Adding configuration: ${config_line}"echo "${config_line}" | tee -a "${MAILRC}" >/dev/nullfi
doneecho "Configuration completed successfully."
四、测试可否成功发送邮件
echo "test" | mail -s "test" ?????????@qq.com