2018年5月12日 星期六

RoundCube Webmail vs IPv6 = your session is invalid or expired 你的工作階段已失效或過期

安裝 好 iRedmail 套件後, 其中有一個 RoundCube webmail
在原先 IPv4 的環境中運作的一直很穩定
在網路環境中增加了 IPv6  的服務後,  使用 WebMail  的同仁出現了一個問題  登入後 很短時間內即會出現
 "your session is invalid or expired" 或 "你的工作階段已失效或過期"
 的錯誤訊息
預設的session expired time 為10 mins,  不應該會在短短的1~2mins 中即出現session timeout 訊息才對.

本以為是 GMT 或 Asia/Taipei 的timezone設定的問題,
修改php5/apache2 下的 php.ini 中的 date.timezone 由 GMT 改為 Asia/Taipei
同時修改 roundcube 的 main.inc.php 中的 rcmail_config['timezone']由 'auto' 也改為 'Asia/Taipei',
問題仍舊存在...  >_<

看來 錯誤跟 session 中間的動作有關
另外只好將  log_session 由預設的 false  改為 true, 並觀察一下 syslog 中的紀錄是否有跡可循,

發現 session 的中間有 IP Check 的錯誤
mail roundcube: IP check failed for l93slkjhjhjkfdsujhejkwrewj; expected 2001:aaaa:bbbb::yyyy:zzzz; got aaa.bbb.ccc.ddd

看來是 IP Check 的程式在 Session 中間處理 IP Check 的動作時發現來源 IP與 nslookup 的結果 不符,  在尚未檢查程式碼及修正回應的訊息前, 先將 main.inc.php 中的  $rcmail_config['ip_check']= 由 'true' 改為 'false' 避免因為IP檢查結果不相符造成 session is invalid or expired /你的工作階段已失效或過期的意外錯誤