clamav-milter 소켓에 대한 postfix 연결 관련 권한 문제

clamav-milter 소켓에 대한 postfix 연결 관련 권한 문제

저는 FreeBSD 11.2에서 postfix postfix-3.3.1_1,1과 clamav-milter clamav-milter-0.100.1_1을 실행하고 있습니다. Postfix와 milter는 소켓을 통해 통신하도록 설정됩니다. 나는 postfix로 작업하기 위해 milter를 얻을 수 없습니다. 뭔가를 간과하고 있는 것 같습니다.

maillog내 메시지는 다음 과 같습니다.

xSep 21 11:33:57 mail2 postfix/smtpd[85759]: 경고: Milter 서비스 unix에 연결 중: /var/run/clamav/clmilter.sock: 권한이 거부되었습니다.

Postfix는 사용자:그룹 postfix:postfix로 실행됩니다. Clamav는 clamav:clamav로 실행됩니다. (clamav를 postfix:postfix로 실행하면 문제가 지속됩니다.) 사용자 postfix도 clamav 그룹의 구성원입니다.

소켓 자체에 대한 권한은 다음과 같습니다.

srwxrwxrwx 1 clamav clamav 0B 9월 21일 11:46:26 2018 /var/run/clamav/clmilter.sock

clamav-milter.conf에서 default를 실행했는데 사용자를 postfix로 변경해도 작동하지 않습니다.

MilterSocket unix:/var/run/clamav/clmilter.sock

# MilterSocket unix:/var/spool/postfix/var/run/clamav/clmilter.sock
# MilterSocket inet:8890

# ClamdSocket unix:/var/run/clamav/clmilter.sock

#MilterSocket inet:7357

# Define the group ownership for the (unix) milter socket.
# Default: disabled (the primary group of the user running clamd)
#MilterSocketGroup postfix

# Sets the permissions on the (unix) milter socket to the specified mode.
# Default: disabled (obey umask)
#MilterSocketMode 660

# Remove stale socket after unclean shutdown.
#
# Default: yes
FixStaleSocket yes

# Run as another user (clamav-milter must be started by root for this option to work)
#
# Default: unset (don't drop privileges)
User postfix

rc.conf에서

clamav_milter_enable="YES"
clamav_milter_socket="/var/run/clamav/clmilter.sock"
clamav_milter_socket_user="postfix"
clamav_milter_socket_group="postfix"

postfix의 main.cf에서도 꽤 표준적입니다:

smtpd_milters = unix:/var/run/clamav/clmilter.sock inet:127.0.0.1:8891

답변1

기본적으로 FreeBSD postfix는 chroot를 실행하여 이 디렉토리가 루트 디렉토리가 되도록 행을 /var/spool/postfix변경합니다 . smtpd_milters예를 들어:

smtpd_milters = unix:/clamav/clamav-milter.ctl, ...

답변2

이 질문을 잊어버렸는데 한동안 작업을 했기 때문에 지금 구성하는 방법은 다음과 같습니다.

Postfix 및 Clamav 버전:

clamav-0.102.2,1 postfix-3.5.1,1

/usr/local/etc/postfix/main.cf에서 inet을 통해 포트 7357에 clamav-milter를 설치했습니다.

smtpd_milters = inet:127.0.0.1:7357 inet:127.0.0.1:8891
milter_default_action = accept

/usr/local/etc/clamav-milter.conf에서:

MilterSocket inet:7357
FixStaleSocket yes
PidFile /var/run/clamav/clamav-milter.pid
ClamdSocket unix:/var/run/clamav/clamd.sock

/usr/local/etc/clamd.conf에서:

PidFile /var/run/clamav/clamd.pid
LocalSocket /var/run/clamav/clamd.sock
User clamav

/etc/rc.conf에서:

clamav_freshclam_enable="YES"
clamav_clamd_enable="YES"
clamav_milter_enable="YES"
clamav_milter_socket="inet:7357"
clamav_milter_socket_mode=777

관련 정보