스팸 문제가 발생한 후 중단했습니다.postfix
postfix stop
그리고 수동 검사를 통해 mailq
수십만 개의 전송되지 않은 스팸 메시지가 발견되었습니다.
스팸은 로컬 호스팅 사이트 중 하나에서 전송되었으며 내가 메일 발송을 중단한 이후로 사용자가 이메일 전송을 시도하지 않은 것으로 알고 있습니다.
따라서 내 컴퓨터에 있는 이 사용자의 모든 메시지는 /var/spool/postfix/maildrop
스팸으로 간주되므로 나중에 조사하기 위해 해당 메시지를 삭제하거나 다른 디렉터리로 이동하고 싶습니다.
제 생각에는특정 소유자의 모든 파일 이동(이 경우 사용자 "web2")~에서
/var/spool/postfix/maildrop
도착하다
/var/spool/postfix/temp-spam
어떻게 해야 하나요?
답변1
find
예를 들어 다음과 같이 및 를 사용할 수 있습니다 xargs
.
find /var/spool/postfix/maildrop -user web2 -print0 -type f | xargs -0 -I{} mv {} /var/spool/postfix/temp-spam
다음을 삽입하여 테스트할 수 있습니다 echo
.
find /var/spool/postfix/maildrop -user web2 -print0 -type f | xargs -0 -I{} echo mv {} /var/spool/postfix/temp-spam
답변2
xargs
를 사용하여 생성하지 않고도 find
이 작업을 수행 할 수도 있습니다 -exec
.
find /var/spool/postfix/maildrop -user THEUSER -type f -exec mv {} /var/spool/postfix/temp-spam \;
이동되는 파일을 보려면 -exec
명령에 추가 콘텐츠를 추가할 수 있습니다.
find /var/spool/postfix/maildrop -user THEUSER -type f -exec ls -lah {} \; -exec mv {} /var/spool/postfix/temp-spam \;
답변3
표준 명령find
메타데이터(이름, 권한 등)를 기반으로 파일을 일치시키고 작업할 수 있습니다. 디렉토리를 재귀적으로 순회합니다. 기본 구문 find
다음에는 탐색할 디렉터리, 일치 기준, 선택적으로 실행할 명령이 옵니다(지정된 명령이 없으면 find
일치하는 이름이 인쇄됩니다).
find /var/spool/postfix/maildrop -user web2 -exec mv -t /var/spool/postfix/temp-spam {} +
mv -t /var/spool/postfix/temp-spam …
그러면 일치하는 파일에 대한 명령이 실행됩니다. {}
일치하는 모든 파일의 목록으로 대체됩니다( 목록이 너무 길면 여러 번 find
실행됩니다 ).mv
옵션은 GNU(Linux/Cygwin) 확장 -t
입니다 . mv
해당 파일이 없는 시스템에서는 먼저 이동하려는 파일 이름을 전달한 다음 대상을 전달해야 합니다. 이 -exec … +
작업에서는 명령줄 끝에 파일 이름을 전달하는 것만 허용하므로 다른 방법을 사용해야 합니다.
find /var/spool/postfix/maildrop -user web2 -exec mv {} /var/spool/postfix/temp-spam \;
( mv
각 파일마다 별도로 호출됨)
find /var/spool/postfix/maildrop -user web2 -exec sh -c 'mv "$@" "$0"' /var/spool/postfix/temp-spam {} +
(중간 쉘을 사용하여 원하는 순서로 매개변수를 가져옵니다.)
zsh를 사용한다면 다음을 사용할 수 있습니다.글로벌 예선와 동일한 작업을 수행합니다 find
. 여기서는 u
사용자가 소유한 파일을 일치시키는 데 사용되는 플래그입니다.
mv /var/spool/postfix/maildrop/*(u:web2:) /var/spool/postfix/temp-spam
( find
위 명령과 달리 하위 디렉터리로 재귀적으로 들어가지 않습니다. 여기서는 필요하지 않지만, 필요한 경우 **/
경로에 "0개 이상의 하위 디렉터리"를 삽입합니다. 예를 들어 /var/spool/postfix/maildrop/**/*(u:web2:)
.)