Command-Line

為什麼我不能將密碼回顯到 fetchmail?

  • November 16, 2019

我正在嘗試配置 fetchmail。在我處理 fetchmailrc 的語法之前(我發現問題的錯誤程度與我不理解的問題的不同方面的數量是協同的,所以一次一個新的東西),我決定通過所有通過命令行的選項。

我厭倦了為每個測試輸入密碼,所以我想在腳本中傳遞它。我找不到像 –pass 這樣的東西作為 fetchmail 的命令行選項,所以我想也許可以將密碼回顯到 fetchmail ala:

echo "dohadeer"| fetchmail  --all -p pop3 -k pop.gmail.com --ssl -d0   --user FakeName@gmail.com

我解雇了它並在Google上搜尋了“fetchmail 密碼命令行”並獲得了幾個聲稱上述技術有效的點擊!但是當我嘗試它時,我得到了錯誤:

fetchmail: can't find a password for FakeName@gmail.com@pop.gmail.com.

我可以找出原始問題的解決方法,但我無法弄清楚為什麼這種方法不起作用。顯然,我對 Linux 有一些不了解並想弄清楚的地方。

出現給定錯誤消息的原因是 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 {
...

但是,您可以嘗試以下scripthack 以fetchmail在偽終端中執行。

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

引用自:https://unix.stackexchange.com/questions/24372