저는 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