왜 fetchmail의 비밀번호를 에코할 수 없나요?

왜 fetchmail의 비밀번호를 에코할 수 없나요?

fetchmail을 구성하려고 합니다. fetchmailrc의 구문을 다루기 전에(문제에서 발견한 오류 수준은 내가 이해하지 못한 문제의 다양한 측면과 시너지 효과를 발휘하므로 한 번에 새로운 일 하나씩) 모든 과정을 진행하기로 결정했습니다. 명령줄을 통한 옵션.

모든 테스트에 대해 비밀번호를 입력하는 것이 지겨워서 스크립트에 비밀번호를 전달하고 싶습니다. fetchmail의 명령줄 옵션으로 --pass와 같은 항목을 찾을 수 없었기 때문에 비밀번호를 fetchmail ala에 다시 표시하는 것이 가능할 것이라고 생각했습니다.

echo "dohadeer"| fetchmail  --all -p pop3 -k pop.gmail.com --ssl -d0   --user [email protected]

나는 그것을 무시하고 "fetchmail 비밀번호 명령줄"을 검색했고 위의 기술이 작동한다고 주장하는 몇 가지 히트를 얻었습니다! 하지만 시도하면 오류가 발생합니다.

fetchmail: can't find a password for [email protected]@pop.gmail.com.

원래 문제에 대한 해결책을 찾을 수 있지만 이 접근 방식이 작동하지 않는 이유를 알 수 없습니다. 분명히, 제가 Linux에 대해 이해하지 못하는 것이 있고 그것을 알아내고 싶습니다.

답변1

오류 메시지가 나타나는 이유는 fetchmail의 표준 입력이 터미널이 아닌 파이프에 연결되어 있기 때문입니다.

man fetchmail | less -Ip 'user authentication step failed'

# from: 
# http://opensource.apple.com/source/fetchmail/fetchmail-33/fetchmail/fetchmail.c

...
if (!isatty(0))   // <-- tests if stdin is a terminal (added)
{
   fprintf(stderr,
      GT_("fetchmail: can't find a password for %s@%s.\n"),
         ctl->remotename, ctl->server.pollname);
         return(PS_AUTHFAIL);
         } else {
...

그러나 다음 트릭을 사용 하여 의사 터미널에서 실행 script되도록 할 수 있습니다.fetchmail

(sleep 0.3; echo "dohadeer") | 
( script -q /dev/null fetchmail --all -p pop3 -k pop.gmail.com --ssl -d0 --user [email protected] )

답변2

고의로. 간단한 명령을 실행하면 시스템의 다른 누구라도 명령줄에 있는 내용을 볼 수 있으므로 ps암호가 필요한 대부분의 소프트웨어는 명령줄에서 전달된 암호를 받아들이지 않습니다.

사용할 수 있는 몇 가지 트릭이 있지만 wish찾고 expect있는 것이 있습니다.더 적은복잡하지 않고...

답변3

.netrc파일을 사용하여 비밀번호를 지정할 수 있습니다. 이에 대해서는 매뉴얼에 설명되어 있습니다.http://www.fetchmail.info/fetchmail-man.html#14. 예:

machine hermes.example.org
login joe
password topsecret

답변4

이 질문이 오래되었다는 것을 알고 있지만 다른 사람이 답변을 찾으러 오면 이것이 도움이 되기를 바랍니다. 이것이 내가하려는 일입니다.

echo "메일 비밀번호를 전달하기 위해 메일 서버 폴링" |

나는 실제로 OP와 OP가 답변 중 하나에 게시한 의견을 바탕으로 이것을 결합했습니다. OP가 놓친 것 같은 유일한 점은 stdin으로 구성을 보내는 것이 여전히 구성 규칙을 따라야 한다는 것입니다. 따라서 메일 서버는 구성의 첫 번째 항목이어야 하며 비밀번호는 여전히 "pass"로 시작해야 합니다. 다른 모든 것은 표준 입력을 통해 전달된 블록이나 매개변수에 있을 수 있습니다.

관련 정보