본문 바로가기

Mobile-related

지메일에서 다른 메일 POP3를 더 자주 가져오게 하기



안드로이드 기본 메일어플 대신 지메일어플로 대체하기
1편 - Gmail 알림설정 켜기
2편 - POP3로 다른 메일 가져오기
3편 - Gmail이 다른 메일 POP3를 좀 더 자주 가져오게 하기  <<  현재글


1,2편과의 텀이 길어졌는데 제대로된 방법을 찾다찾다 포기한 경우이기도 하고
중간에 다른 부서로 옮기느라 포스트할 정신이 없기도 하여 3편은 포스트가 늦어졌다.

3편은 편법을 이용하는 방법으로
"어떤 이유든 PC를 1대는 늘 켜놓고" and "썬더버드(메일클라이언트)를 사용하는" 사람에 한하여
적용해봄직한 방법이다.


본론으로 들어가서
아래는 2편에서 추가했던 내용이다.

욕심을 부리자면 외근이 잦아 스마트폰으로도 바로바로 받아봤으면 하는데
지메일로 합치자니 지메일은 POP3갱신이 대략 1시간 단위라.. 스마트폰으로는 받을 수 있지만 갱신이 늦고.. 


포스트를 하면서 추가된 내용에서는 회사메일을 기준으로 내용을 진행시켰으나
원래는 기본적으로 메일 수신이 드물거나 적은, 그리고 그 메일의 내용들이 긴급을 요하지 않는
부차적인 메일계정 혹은 보조 메일계정들을 
지메일로 통합하는 내용이었다.

하지만 완전히 부차적인 메일계정이 아니라 주 메일계정에 준하는, 
그리고 메일량은 많지 않으나 오는 메일들은 어느정도 긴급을 요하는 내용인 경우라면
1시간에 한번씩 외부메일을 긁어오는 지메일이 답답할 수 밖에 없다.

개인적으로도
부서이동 전에는 업무용으로는 발송만 했기 때문에 긴급하게 받아봐야 하는 메일이 없었지만
지금은 상당수의 업무보고/지시가 이메일로 진행되어
꼭은 아니지만 어느 정도는 바로 바로 받아봐야하는 경우가 발생하기 시작했다.
물론 정말 급한 건들은 전화로 오기 때문에 그렇게까지 빠르게 메일을 받아봐야 할 필요는 없지만..


1시간마다 메일을 긁어오는 지메일이 너무 답답하여 구글링을 해보았다.

새로이 알게된 사실은
지메일은 메일이 많이 올수록 더 자주 메일을 긁어온다는 것이다.
(정말 합리적인 방법이라고 생각한다. 과연 구글! 이라는 생각을 했다.)

즉, 다른 메일 계정에서 메일을 확인했는데 새 메일이 있어서 받아온다면
다음 번엔 시간간격을 약간 줄여서 메일을 확인한다.
이번에도 메일이 있다면 이 다음번엔 좀 더 시간 간격을 줄여서...
이런 식으로 확인할 때마다 메일이 있다면 메일 확인 시간간격이 점점 줄어드는 것이고
확인시 메일이 없다면 반대로 시간간격이 늘어난다.

정확한 알고리즘이 없어서 수치로 말하기는 힘들지만
매번 메일 확인시 메일이 있다면 혹은 메일 확인시 새 메일이 개수가 많다면
메일 확인 시간 간격이 줄어들고 그렇지 않다면  시간 간격이 늘어난다.


이런 사실을 확인했으니
나에게 남은 선택은 한가지다.
"어떤 방법"으로 회사메일로 "정기적으로" 메일을 투척할 것이냐..
어떤 방법이든 회사 메일계정으로 정기적으로(ex. 10분, 15분마다) 메일을 보낸다면
지메일은 점점 자주 메일을 확인하기 시작할 것이고
적어도 10분 15분에 한번씩은 메일을 긁어올 것이기 때문이다.
(리눅스에서는 crontab을 이용하면 간단하다)


그래서 메일을 정기적으로 발송할 수 있는 방법을 찾기 시작했다.
스팸에 이용될 가능성이 있어서 그런건지는 모르겠지만
이런 기능을 하는 프로그램을 찾기는 쉽지 않았다.

외산 프로그램중에 febooti 라는 회사에서
커맨드라인에서 메일을 보낼 수 있게 해주는 프로그램이나
예약작업으로 메일을 보낼 수 있는 프로그램을 제공하고 있지만
유료로 팔고 있어서 선택지에서 제외시켰다.
(트라이얼버전을 사용해봤는데 품질은 매우 좋았다. 젠장.. TT_TT )

telnet으로 smtp에 접속하여 메일을 보내는 방법도 있지만
windows cmd에서 telnet으로 진입하는 순간 말그대로 cmd가 아닌 telnet이기에
배치파일로 만들어 놓을 수도 없고...

젠장,젠장을 외치며 프로그램을 하나 만들까하다가 
괜찮은 visual basic 소스를 구글링해냈다.

SendMail "smtp.somewhere.co.kr", _
    "보내는 사람 <someone@somewhere.co.kr>", _
    "이것은 제목이지요", _
    "recipient@somewhere.co.kr", _
    "이것은 내용입니다", _
    ""

Function SendMail(SmtpServer, SenderEmail, Subject, Recipient, Message, Attachment)
    Dim iMsg 
    Dim iConf 
    Dim Flds 

    'We will use CDO Send Using Port in this example
    Const cdoSendUsingPickup = 1
    Const cdoSendUsingPort = 2

    'Use COM to create Message and Configuration Objects
    set iMsg = CreateObject("CDO.Message")
    set iConf = CreateObject("CDO.Configuration")

    'Now Set the field to the configuration objects fields
    Set Flds = iConf.Fields

    'Set the field namespaces to the relevant variables/constants
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SmtpServer
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10  
        .Update
    End With
    
    If Attachment <> "" Then
        iMsg.AddAttachment Attachment
    End If

    ' Apply the settings to the message.
    With iMsg
        Set .Configuration = iConf
        .To = Recipient 
        .From = SenderEmail
        .Subject = subject
        .HTMLBody = Message
        .Send 'Finally Send the message
    End With

    ' Clean up variables.
    Set iMsg = Nothing
    Set iConf = Nothing
    Set Flds = Nothing
End Function

출처 : serious-code.net의 WindowsScriptSnippets에서 2. 메일보내기
허가 : http://serious-code.net/tc/guestbook/45#guestbook45 
(재미있는 부분은 원글에도 있는대로 ID/PW인증이 없다는 점이다)


이제 저 소스를 이용하여
Windows의 예약된 작업(scheduled tasks, windows폴더 안의 Tasks 폴더에 저장된다.)에 걸어주면
windows가 부지런히 메일을 보내줄테고 구글도 부지런히 메일을 긁어갈 것이다.

먼저 언급한대로 지메일이 메일을 긁어오는 시간 간격을 결정하는 알고리즘을 알 수 없어
이리저리 테스트해서 다음 두가지 사실을 깨달았다.

1. 장기간 받아오는 메일이 없는 경우 1시간간격으로 메일을 받아온다.
2. 일정시간 간격으로 정기적으로 메일을 보내보면 그 시간간격의 절반정도의 간격으로 메일을 긁어온다.

아무런 조치를 취하지 않았을 때 1시간에 한번씩 긁어오던 메일을
15분에 한번씩 메일을 발송하자 7~8분간격으로
10분에 한번씩 메일을 발송하자 5분간격으로 메일을 긁어오기 시작했다.


아무런 조치도 취하지 않고 주말이라 메일이 거의 오지 않아 가져오는 메일이 없는 상태
1시간에 한번정도씩 메일이 있는지 확인하고 있다.


테스트를 위해서 다시 메일을 쏘기 시작해서 (8분간격으로 발송)
시간 간격이 점점 줄어들어 메일 자동발송 몇시간만에 4~5분 간격으로 줄어들었다.


이제 남은 것은
회사메일에서 긁어와서 지메일에 쌓이게 되는 이 편법용 자동발송메일들(이하 쓰레기메일)을 처리하는 것이다.

메일을 보내다보면 눈썰미가 좋은 사람은 발견하게 되는 부분인데
홍길동 <gdhong@abcd.com>
이런 식으로 주소를 지정하게 되면
<>부분의 메일주소로 메일이 발송되면서 메일함에서는 홍길동 이라는 이름이 나온다.
( 메일 계정서버에 따라 홍길동 이라는 부분이 " 로 묶이는 경우도 있다 )

즉, 소스 1~6행을 적절히 수정하여
지메일에서 검색하기 용이하게 그리고 다른 메일과 겹치지 않도록
메일제목이나 보내는/받는 사람이름을 설정해주고
지메일에서는 필터를 설정하여 자동으로 메일을 삭제한다.
개인적으로는 아래처럼 필터를 설정하였다.

이렇게 설정해주면 지메일에서는 쓰레기메일이 쌓이지 않게 할 수 있다.


이로써 모두 해결되었는 줄 알았지만....
아무래도 회사메일이고 업무용이라 서버에 원본을 남겨야했다.
그러다보니 지메일에서는 메일이 쌓이지 않지만
회사메일계정에 쓰레기메일이 쌓이기 시작했다.
(지메일에 외부메일을 등록하는 과정에서 서버에 사본을 남기지 않도록 해주면 이런 걱정 없다)

해결을 위해 고심고심하다 깨달은 사실은
외근으로 외부에 나가있는 경우가 많긴하지만
그대로 상당시간을 사무실에 앉아있다는 것이다.

그래서 아침저녁으로 1번씩 메일을 검색하여 수동으로 지워줬다.
10분간격이라면 하루동안 144개, 8분간격이라면 180개의 메일이 쌓이게 되는데
아침저녁 혹은 아침점심저녁이라면 한번에 각각 70~90개씩, 40~60개씩만 지워주면 되니
거기에다가 검색한 뒤 전체선택하여 삭제하니 클릭몇번이면 되기에 살짝 만족을 했었다.

다른 문제가 발생했는데..
사무실에 앉아있는동안
썬더버드로 메일을 받는데 이때 이 쓰레기메일들이 같이 들어오다보니 여간 불편한게 아니었다.

그래서 메뉴 이곳저곳을 방황하여 방법을 찾았다.
썬더버드에서
도구 - 메일규칙에 가면 메일에 대해서 자동으로 어떤 작업을 해줄 수 있다.
(쓰는게 영문버전이라 한글버전에서 메뉴가 정확하게 기억나지 않는다. tool - message filters )

메일규칙을 열어서 새로 만들기를 눌러서 그림처럼 설정한다. 

필터이름이라든지 메일 매칭 조건이라든지 설정할 수 있다.
주의할 부분은 붉은 박스 두군데이다.

일단 아래쪽의 POP서버에서 지우기를 선택하면
매치되는 메일을 POP서버에서 삭제를 시켜준다.

즉, 이것을 이용하면 서버에 사본을 남겨두면서도 원하는 메일만 서버에서 삭제할 수 있다.

이 기능이 모든 메일함에서도 잘 동작하면 좋겠지만
원래그런건지 버그인지는 모르겠지만 이 기능(Action)은 메일을 받아올 때에만 정상동작한다.
( 동작과정을 추측컨데 원래 그런 기능일 것이다. )
그렇기에 상단 박스처럼 메일을 받아올 때 로 설정해줘야 한다.
물론 메일을 받아올 때 or 수동 으로 설정해도 되지만 수동은 의미가 없다.

이렇게 해주면 새로 메일을 받아오면서 쓰레기메일들은 서버에서 제거되므로
아침저녁으로 메일을 지워줄 필요가 없다.
그리고 서버에선 제거되었지만 로컬에 남아 있는쓰레기 메일을 정리하기 위해서
아래 그림처럼 filter를 하나 더 설정한다.


이렇게 설정해주면
썬더버드에서 메일을 정기적으로 메일 받아 올때마다
서버에서 쓰레기 메일을 지워주고 로컬에서도 휴지통으로 메일을 옮기기 때문에
쓰레기메일을 제외한 진짜 새메일만 받은편지함으로 들어간다.
(필터를 잘 이용하면 메일을 분류하는데도 용이하다)

단, 쓰레기메일을 발송하는 간격보다 썬더버드에서 메일을 확인하는 간격이 짧다면
쓰레기 메일이 오는 족족 삭제되기때문에 지메일에서 메일을 긁어가려할 때마다 새메일이 없는 상태가 된다.
그렇기 때문에 썬더버드의 간격을 늘리거나 쓰레기메일 발송간격을 좀 줄여줘야한다.

또한 지메일에서 메일을 가져오는 간격이 한번에 줄어드는 것이 아니기 때문에
짧게는 4~5시간, 적어도 밤부터 다음출근까지, 길게는 퇴근부터 출근까지동안
썬더버드의 메일 필터 적용을 보류하여
지메일의 메일 확인 시간간격이 충분히 짧아지도록 기다릴 필요가 있다.

실제로 한다면 자기전에 자동메일 걸고
아침에 출근해서 썬더버드 메일 필터걸면 충분할 듯하다.

개인적으로는 8분에 한번씩 발송하여 지메일은 4~5분에 한번씩 메일을 확인하고
썬더버드는 10분에 한번씩 메일을 확인하여 POP서버에서 메일을 삭제한다.



이로써
1. 항상 켜두는 PC에서 정기적으로 자주 쓰레기메일을 발송하고
2. 이로 인해 지메일에서도 자주 메일을 긁어가는데
3. 지메일에서는 필터로 쓰레기메일을 정리하고
4. POP서버는 썬더버드로 쓰레기메일을 정리해준다.
5. 지메일에서 자주 메일을 긁어오는 덕에 드물게 받는 중요메일을 가급적 빠르게 푸시받을 수 있다.



마지막으로 다시 한번 언급하지만
이번 3편은 매우 불편하고도 어떻게 보면 뻘짓에 가까운 편법이다.
그래서 포스트할까말까를 심각하게 고민했었다.

PC도 24시간 켜 있어야하는데다가
다른 메일계정도 지메일 푸시로 받는다는 전제조건하에서 나온 방법이기 때문이다.

게다가 썬더버드에도 이런저런 설정을 해줘야 하고...
이렇게까지해서 메일을 받아봐야 할 정도로 급한 메일이 있을리는 만무하고..

오히려 지메일 푸시를 포기하고
안드로이드에서 다른 메일 클라이언트를 사용하는 것이 훨씬 합리적인 방법이다.

다만...
늘 켜두는 PC가 한대있고 지메일 중요편지함 기능이나 특정 라벨만 푸시받아서
광고성의 쓸데없는 메일은 폰으로 안받아보는 나에게는 매우 유용한 방법이다.
방법을 찾는 과정 자체가 재미있었다는 것이 가장 큰 이유지만..