# ========================================== # freshclam — ClamAV 서명(바이러스 DB) 갱신 · docker-compose.yml 의 clamav-updater 가 읽는다 (mail/README.md "악성 검사 (ClamAV)") # # 서명을 받아 볼륨 _clamav-db 에 쓴다. 검사기(clamd — compose 의 clamav)는 같은 볼륨을 읽기 전용으로 붙이고 # 바뀐 서명을 스스로 다시 읽는다(clamd.conf 의 SelfCheck) — 두 컨테이너는 네트워크로 잇지 않는다(NotifyClamd 를 쓰지 않는다). # 바깥(database.clamav.net — HTTPS · DNS)에 나가는 것은 이 컨테이너뿐이다. 바깥에서 온 파일을 여는 검사기는 바깥 길이 없다. # # 이미지의 기본 설정을 이 파일로 통째로 바꾼다. compose 가 처음부터 비-root(이미지의 clamav 사용자 100:101)로 띄우므로 # 이 파일은 그 사용자가 읽을 수 있어야 한다(644 — 저장소를 umask 077 로 클론하지 않는다). # 바꾼 뒤에는 docker compose … up -d --force-recreate clamav-updater (설정 파일만 바뀌면 compose 가 다시 만들지 않는다) # ========================================== DatabaseDirectory /var/lib/clamav # 로그는 표준 출력으로만(docker logs — compose 가 --stdout 을 준다). 파일에 남기지 않는다 LogTime yes Foreground yes # 서명을 받는 곳 — ClamAV 공식 CDN. 새 판이 있는지는 DNS(TXT current.cvd.clamav.net)로 먼저 묻고, 있을 때만 받는다 DatabaseMirror database.clamav.net # 하루 12번(2시간마다) 묻는다 — ClamAV 기본값. CDN 은 1시간에 한 번보다 자주 묻지 말라고 한다(넘으면 잠시 막는다 — 문제 해결 "서명 갱신 실패") Checks 12 # 바뀐 만큼만 받는다(cdiff) — 서명 전체를 매번 받지 않게 ScriptedUpdates yes # 받은 서명을 바꿔 넣기 전에 따로 읽어 본다 — 깨진 서명이 검사기를 멈추지 않게. 읽는 동안 메모리를 잠시 더 쓴다(compose 의 한도) TestDatabases yes