적절하게 구성되면( set header_cache=
) mutt는 메시지 헤더를 캐시 파일에 저장합니다. 이는 이메일 통계를 생성하는 데 사용될 수 있습니다. 파일 형식 아시는 분 계신가요? 여기에 포함된 정보를 추출할 수 있는 도구가 있나요? (추가로 strings
,, grep
등 awk
)
답변1
짧은 답변:
캐시가 포괄적이지 않을 수도 있습니다. 메시지를 삭제하고 나중에 hcache가 해당 편지함에 대한 헤더 캐시를 다시 계산하는 경우 통계에는 삭제 전의 메시지가 포함되지 않습니다.
서버의 메일 로그에 접근할 수 없다면 procmail과 같은 필터링 메커니즘에 접근할 수 있습니까? 이를 사용하여 분석을 위한 대체 로그를 생성할 수 있습니다.
그렇지 않으면 수신 메일 로그를 생성할 수 있는 프로그램을 사용하여 사서함을 폴링할 수 있습니까? Offlineimap 필터 또는 일부 해싱 및 캐싱과 결합된 fetchmail/retchmail과 유사합니다.
더 긴 답변:
캐시 파일은 DBM 스타일 데이터베이스입니다. mutt의 정확한 빌드 옵션에 따라 다음 중 하나일 수 있습니다.양자 데이터베이스 관리,도쿄 내각,데이터베이스 관리 시스템또는버클리 데이터베이스(BDB); 모두 BDB API의 변형을 구현합니다.
올바른 라이브러리 구현을 사용하지 않으면 데이터베이스를 안정적으로 읽을 수 없을 것 같습니다. ldd
Tokyo Cabinet을 사용하여 로컬 mutt 구현을 알려주세요.
$ ldd /usr/bin/mutt
…
libtokyocabinet.so.8 => /usr/lib/libtokyocabinet.so.8 (0xb74f2000)
…
그런 다음 캐시 파일에 저장된 BDB를 쿼리하기 위해 라이브러리를 사용하는 프로그램을 작성해야 합니다. Perl, Ruby, Lua, Java 및 물론 C에 대한 바인딩이 있습니다.
헤더는 CRC에 의해 인덱싱된 값으로 데이터베이스에 저장되는 것 같습니다. 내가 아는 한, CRC는 메일함의 경로에서 파생됩니다. 즉, 저장된 헤더는 다음과 같습니다.이 편지함에 있는 모든 메시지의 헤더. 따라서 프로그램은 기본적으로 특정 메일함의 모든 메시지에 대한 모든 헤더를 포함하는 버퍼로 끝납니다. 나는 이것이 현재 편지함에 있는 모든 메시지에서 헤더를 추출하는 것보다 더 유용하다고 생각하지 않습니다(위의 "짧은 대답"이 주어지면 더 신뢰할 수 있다고 보장되지 않습니다).