作者 主題: 請問dovecot 可以 exec command嗎  (閱讀 3841 次)

0 會員 與 1 訪客 正在閱讀本文。

lmp

  • 懷疑的國中生
  • **
  • 文章數: 50
    • 檢視個人資料
請問dovecot 可以 exec command嗎
« 於: 2009-02-18 17:24 »
因為想用dovecot做LDA 來統一送信 (maildir和mail quota)
但是又想在符合某條件header下呼叫某一隻外部程式來執行
請問有甚麼比較好的方式?

因為如果LDA改為procmail的話 quota和maildir 的格式就會不正確 (因為沒support maildir++?)
« 上次編輯: 2009-02-18 17:27 由 lmp »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17477
    • 檢視個人資料
    • http://www.study-area.org
回覆: 請問dovecot 可以 exec command嗎
« 回覆 #1 於: 2009-02-18 18:17 »
how about procmail?

lmp

  • 懷疑的國中生
  • **
  • 文章數: 50
    • 檢視個人資料
回覆: 請問dovecot 可以 exec command嗎
« 回覆 #2 於: 2009-02-21 17:36 »
雖然透過procmail可以呼叫dovecot 來遞送信件
可是over quota procmail 卻無法於第一時間拒絕,導致後面dovecot 退信變得怪怪的

有辦法在procmailrc 有check maildir quota的檢查動作嗎?
或是依據dovecot的回應而執行退信的動作?
« 上次編輯: 2009-02-21 18:42 由 lmp »

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5401
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 請問dovecot 可以 exec command嗎
« 回覆 #3 於: 2009-02-21 19:15 »
用 patch 過的 procmail 與 dovecot LDA 一起使用.
http://dovecot.org/pipermail/dovecot/2006-July/014656.html

lmp

  • 懷疑的國中生
  • **
  • 文章數: 50
    • 檢視個人資料
回覆: 請問dovecot 可以 exec command嗎
« 回覆 #4 於: 2009-02-21 20:37 »
procmail: Assigning "RECIPIENT=to@deliver.com.tw"
procmail: Assigning "SENDER=from@sender.com.tw"
procmail: Assigning "DELIVER_INBOX=yes"
procmail: Assigning "DELIVER_REPLACE_INBOX_NAME=yes"
procmail: Assigning "DELIVER_NEW_INBOX_NAME=INBOX"
procmail: Assigning "DELIVER_PIPE_NO_LOCK=yes"
procmail: Assigning "DELIVER_RAW_MODE=yes"
procmail: Assigning "DELIVER_REMOVE_FROM=yes"
procmail: Assigning "DELIVER_PROGRAM=/usr/local/libexec/dovecot/deliver -m $BOXNAME -d to@deliver.com.tw -e"
procmail: disable deliver locking "DELIVER_PIPE_NO_LOCK=yes"
procmail: RECIPIENT "to@deliver.com.tw"
procmail: boxname= "INBOX"
procmail: deliver through external program before expansion "/usr/local/libexec/dovecot/deliver -m $BOXNAME -d to@deliver.com.tw -e"
procmail: Assigning "BOXNAME=INBOX"
procmail: Assigning "BOXNAME"
procmail: Assigning "LASTFOLDER=/usr/local/libexec/dovecot/deliver -m INBOX -d to@deliver.com.tw -e"
procmail: Executing "/usr/local/libexec/dovecot/deliver,-m,INBOX,-d,to@deliver.com.tw,-e"
procmail: Notified comsat: "vmail@:/usr/local/libexec/dovecot/deliver -m INBOX -d to@deliver.com.tw -e"
From -t  Sat Feb 21 20:29:17 2009
 Subject: fds
  Folder: /usr/local/libexec/dovecot/deliver -m INBOX -d to@deliver.com.tw      2357
Quota exceeded (mailbox for user is full)


跟未改前手動deliver一樣
改後一樣不會由prcomail做退信的動作...


dovecot 雖然會呼叫sendmail來退信,可是寄信者跟收信者卻變成虛擬使用者vmail ,故無法正確退信

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5401
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 請問dovecot 可以 exec command嗎
« 回覆 #5 於: 2009-02-21 23:32 »
sendmail? 為什麼 dovecot 會呼叫 sendmail?
照你的想法, 應該是 procmail 去執行 sendmail 才對吧. dovecot LDA 只是負責把信寫到 maildir++ 的信件檔中.

不過上頭 procmail 的動作, 也看不出你有指定去執行 sendmail 吧. 都是去跑 dovecot LDA.

lmp

  • 懷疑的國中生
  • **
  • 文章數: 50
    • 檢視個人資料
回覆: 請問dovecot 可以 exec command嗎
« 回覆 #6 於: 2009-02-21 23:57 »
sendmail 是設在 dovecot.conf裡
procmail因為沒法判斷是否信箱爆了, 等dovecot寄到了才發現信箱爆了...但是無法正確遞送正常的退信訊息給原寄信者

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5401
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 請問dovecot 可以 exec command嗎
« 回覆 #7 於: 2009-02-22 00:29 »
你的想法有問題吧.
應該是 sendmail/postfix/qmail 之類的 MTA 程式收信下來.
MTA 收下來的信再轉由 procmail/maildrop/deliver (dovecot LDA) 之類的 LDA 去處理 (如果不需要這個, 一般的 MTA 也有自己內建的 LDA 可以用).
quota 滿了, LDA 運作會失敗, 信會留在 MTA 的 queue/spool 裡頭, 等逾時就會退回.

看不出來有什麼必要在 LDA 上頭自己去做退回的動作? (dovecot LDA 可以自己寫 plugin 來做 filter, 也許可以做出你要的功能, 不過我想多數的管理者應該不會有這個需求, 上頭看起來也沒有內建的這個功能, 你可以自行寫一個  sieve script 來處理吧)
http://wiki.dovecot.org/LDA/Sieve