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