Debian VPS上Postfix服务器接收摄像头发送邮件的配置咨询
嘿,我来帮你搞定Postfix接收摄像头发送本地邮件的配置问题~ 先看看你给出的main.cf配置(我帮你整理成代码块方便查看):
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = yes append_dot_mydomain = no readme_directory = no compatibility_level = 3.6 # TLS parameters smtpd_tls_cert_file=/etc/letsencrypt/live/geolithe.duckdns.org/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/geolithe.duckdns.org/privkey.pem smtpd_tls_security_level=may smtpd_tls_loglevel = 1 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_cache smtp_tls_security_level=may smtp_tls_loglevel = 1 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenti...
从你的需求和现有配置来看,有几个关键地方需要调整,才能让摄像头顺利把邮件投递到你的VPS本地:
配置信任摄像头所在网络:
Postfix的mynetworks参数用来定义哪些IP/网段是信任的,这些设备发邮件不需要认证就能被接收。你现在的配置里没看到这个参数,得加上。比如你的摄像头IP是192.168.1.100,或者所在网段是192.168.1.0/24,就把这行加到main.cf里:mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24这样Postfix会信任这个网段的设备,允许它们发邮件到本地账户。
完善
smtpd_relay_restrictions规则:
你给出的这行配置没写完,完整的规则应该确保信任网络的设备能直接投递邮件,建议改成:smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination这条规则的意思是:先允许信任网络的设备,再允许认证过的用户,其他请求延迟处理(防止垃圾邮件)。
确认本地邮件投递配置:
要确保Postfix知道哪些域名的邮件属于本地投递,需要检查mydestination参数,比如你的VPS域名是geolithe.duckdns.org,就设置:mydestination = $myhostname, localhost.$mydomain, localhost, geolithe.duckdns.org这样摄像头发往
user@geolithe.duckdns.org或者user@localhost的邮件会被投递到VPS上的本地用户账户。测试配置和投递:
修改完配置后,先检查语法是否正确:postfix check如果没有报错,就重载Postfix服务:
systemctl reload postfix之后可以在摄像头的设置里配置SMTP服务器为你的VPS IP/域名,端口用25(如果摄像头支持TLS也可以用587),不需要填写用户名密码(因为已经在信任网络里),然后发送测试邮件,查看VPS上的邮件日志(
/var/log/mail.log)来排查问题。
备注:内容来源于stack exchange,提问作者Maxime Pieau

