这是一个简单的SMTP邮件接收服务器,用于接收和保存发送到此服务器的电子邮件。它不会转发邮件,只会将接收到的邮件保存到本地文件系统中。
npm install
由于服务器默认监听25端口(需要管理员权限),请使用以下命令启动:
sudo npm start
如果不想使用sudo,可以修改server.js文件中的PORT常量,改为1024以上的端口(如2525)。
接收到的邮件将保存在项目目录下的emails文件夹中,文件名格式为:时间戳-随机字符串.eml。
您可以使用任何支持.eml格式的邮件客户端(如Thunderbird、Outlook等)打开这些文件查看邮件内容。
您可以使用以下方法测试此SMTP服务器:
telnet localhost 25
然后输入SMTP命令:
HELO example.com MAIL FROM:<sender@example.com> RCPT TO:<recipient@example.com> DATA Subject: Test Email This is a test email. . QUIT
swaks --to recipient@example.com --from sender@example.com --server localhost --body "This is a test email"
配置您的邮件客户端,将SMTP服务器设置为您运行此服务器的IP地址,端口为25(或您自定义的端口)。
如果您启用了TLS支持,可以使用以下方法测试TLS连接:
openssl s_client -starttls smtp -connect localhost:25
openssl s_client -connect localhost:465
测试STARTTLS:
swaks --to recipient@example.com --from sender@example.com --server localhost --port 25 --tls
测试直接TLS连接(安全端口):
swaks --to recipient@example.com --from sender@example.com --server localhost --port 465 --tls-on-connect
注意:如果使用自签名证书,您可能需要添加--tls-verify=0参数来跳过证书验证。
服务器配置可以通过修改config.js文件或设置环境变量来自定义:
SMTP_PORT: SMTP服务器监听端口(默认:25)EMAILS_DIR: 邮件存储目录(默认:'emails')AUTH_OPTIONAL: 是否禁用身份验证(默认:true)MAX_SIZE: 最大邮件大小,单位字节(默认:10MB)LOG_LEVEL: 日志级别(默认:'info')服务器支持TLS加密,可以通过以下环境变量配置:
TLS_ENABLED: 是否启用TLS(默认:false)TLS_CERT: 证书文件路径(默认:'certificate.pem')TLS_KEY: 私钥文件路径(默认:'private-key.pem')TLS_ALLOW_INSECURE: 是否允许不安全的TLS连接(默认:false)SECURE_PORT: 安全SMTP端口,用于直接TLS连接(默认:465)对于测试环境,您可以使用项目中提供的脚本来生成自签名证书:
node generate-cert.js
这个脚本会引导您完成证书生成过程,并提供如何配置TLS的说明。
或者,您也可以直接使用OpenSSL命令:
openssl req -new -x509 -keyout private-key.pem -out certificate.pem -days 365 -nodes
生成证书时,系统会提示您输入一些信息。对于"Common Name (e.g. server FQDN or YOUR name)",请输入您的服务器域名或IP地址。