我目前使用一个复杂的邮件服务器设置,使用Postfix,Dovecot,Amavis和Spamassassin。
一切都很好,但我想改善后缀-Amavis-通讯。目前,postfix将把所有的邮件发送到localhost:10024,这是一种amavis服务。经过检查,修改后的版本被发送回localhost:10025,这是一个用于接收amavis邮件的后缀服务。
我的想法: UNIX套接字(因为安全原因;不重要的原因)
因此,我将amavis配置为在/run/amavis/amavis.socket中生成一个unix套接字。
我改变了这个
amavis-forward:[127.0.0.1]:10024` to `amavis-forward:unix:/run/amavis/amavis.sock但是我得到了这个错误:
Jan 5 13:55:23 server postfix/smtp[1447]: fatal: unknown service: /run/amavis/amavis.sock/tcp
Jan 5 13:55:24 server postfix/qmgr[1254]: warning: private/amavis-forward socket: malformed response
Jan 5 13:55:24 server postfix/qmgr[1254]: warning: transport amavis-forward failure -- see a previous warning/fatal/panic logfile record for the problem description因此,邮件状态设置为status=deferred (unknown mail transport error)。
master.cf:
...
# Amavis
amavis-forward unix - - - - 2 smtp
-o smtp_tls_security_level=none
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
...超过:10024什么都行。我该怎么解决呢?
发布于 2015-01-06 13:46:13
这是通过unix套接字将amavis与后缀通信的解决方案。这是马塞格洛回答的下半部分。
首先,您必须修改/var/spool/postfix/amavis目录:
chmod 770 /var/spool/postfix/amavis
chown amavis:postfix /var/spool/postfix/amavis其思想是: Postfix将在这个目录中创建一个unix套接字smtpd服务。问题是,您必须在master.cf中将其定义为../amavis/amavis-accept - - - 2 smtpd,但是后缀将在pid/unix...amavis/amavis-accept中搜索pid文件,而该文件不起作用。
所以我们需要一个解决办法:
创建一个指向amavis目录的链接:
cd /var/spool/postfix/public
ln -s ../amavis amavis之后,必须准备pid文件目录:
cd /var/spool/postfix/pid
mkdir unix.amavis
chown root:root unix.amavis
chmod 700 unix.amavis现在我们必须配置smtpd服务以接受邮件(master.cf):
amavis/amavis-accept unix n - - - - smtpd
-o smtpd_tls_security_level=none
-o cleanup_service_name=amaviscleanup
-o mynetworks=127.0.0.0/8
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_unknown_recipient_checks现在在amavisd.conf或os的配置文件中配置amavis:
$forward_method = 'smtp:/var/spool/postfix/amavis/amavis-accept';邮件被转发给amavis,你可以在masegaloeh回答的前半部分看到这一点。然后amavis使用smtp将其发送回unix套接字。
问题是后缀。您必须创建一个unix套接字,amavis可以访问这个套接字,而无需将amavis添加到postmap或postfix组。因此,我首先使用了../amavis/amavis-accept,从而成功地创建了套接字。但是后缀创建了一个pid文件,并且它使用了这个名称。作为unix套接字,后缀使用pid/unix. + services name,即pid/unix.../amavis/amavis-accept.
因此,我在public文件夹中创建了这个链接,因此postfix可以创建套接字(设置amavis目录的权限),我只需要在master.cf中使用amavis/amavis-accept。
对于这种配置,pid文件是pid/unix.amavis/amavis.accept。为此,我只需创建unix.amavis directory,由于unix.amavis而不是unix...amavis,它与pid目录的样式有点匹配。
LMTP不适合我!
https://serverfault.com/questions/656367
复制相似问题