首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postfix & Amavis -使用UNIX Soket进行通信

Postfix & Amavis -使用UNIX Soket进行通信
EN

Server Fault用户
提问于 2015-01-05 13:37:43
回答 1查看 5.2K关注 0票数 3

我目前使用一个复杂的邮件服务器设置,使用Postfix,Dovecot,Amavis和Spamassassin。

一切都很好,但我想改善后缀-Amavis-通讯。目前,postfix将把所有的邮件发送到localhost:10024,这是一种amavis服务。经过检查,修改后的版本被发送回localhost:10025,这是一个用于接收amavis邮件的后缀服务。

我的想法: UNIX套接字(因为安全原因;不重要的原因)

因此,我将amavis配置为在/run/amavis/amavis.socket中生成一个unix套接字。

我改变了这个

代码语言:javascript
复制
amavis-forward:[127.0.0.1]:10024` to `amavis-forward:unix:/run/amavis/amavis.sock

但是我得到了这个错误:

代码语言:javascript
复制
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:

代码语言:javascript
复制
 ...
 # 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什么都行。我该怎么解决呢?

EN

回答 1

Server Fault用户

发布于 2015-01-06 13:46:13

这是通过unix套接字将amavis与后缀通信的解决方案。这是马塞格洛回答的下半部分。

首先,您必须修改/var/spool/postfix/amavis目录:

代码语言:javascript
复制
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目录的链接:

代码语言:javascript
复制
cd /var/spool/postfix/public
ln -s ../amavis amavis

之后,必须准备pid文件目录:

代码语言:javascript
复制
cd /var/spool/postfix/pid
mkdir unix.amavis
chown root:root unix.amavis
chmod 700 unix.amavis

现在我们必须配置smtpd服务以接受邮件(master.cf):

代码语言:javascript
复制
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:

代码语言:javascript
复制
$forward_method = 'smtp:/var/spool/postfix/amavis/amavis-accept';

IT如何工作

邮件被转发给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不适合我!

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/656367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档