Use Delivered-To header as a last resort for identity selection (#1488840)
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Use Delivered-To header as a last resort for identity selection (#1488840) |
| | | - Fix XSS vulnerability using Flash files (#1488828) |
| | | - Fix absolute positioning in HTML messages (#1488819) |
| | | - Fix cache (in)validation after setting \Deleted flag |
| | |
| | | } |
| | | break; |
| | | default: |
| | | if (strlen($field) > 2) { |
| | | $result[$id]->others[$field] = $string; |
| | | if (strlen($field) < 3) { |
| | | break; |
| | | } |
| | | break; |
| | | if ($result[$id]->others[$field]) { |
| | | $string = array_merge((array)$result[$id]->others[$field], (array)$string); |
| | | } |
| | | $result[$id]->others[$field] = $string; |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | // VANISHED response (QRESYNC RFC5162) |
| | | // Sample: * VANISHED (EARLIER) 300:310,405,411 |
| | | |
| | | else if (preg_match('/^\* VANISHED [()EARLIER]*/i', $line, $match)) { |
| | | $line = substr($line, strlen($match[0])); |
| | | $v_data = $this->tokenizeResponse($line, 1); |
| | |
| | | 'MAIL-FOLLOWUP-TO', |
| | | 'MAIL-REPLY-TO', |
| | | 'RETURN-PATH', |
| | | 'DELIVERED-TO', |
| | | ); |
| | | |
| | | const UNKNOWN = 0; |
| | |
| | | $from_idx = null; |
| | | $found_idx = null; |
| | | $default_identity = 0; // default identity is always first on the list |
| | | $return_path = $MESSAGE->headers->others['return-path']; |
| | | |
| | | // Select identity |
| | | foreach ($MESSAGE->identities as $idx => $ident) { |
| | |
| | | $from_idx = $found_idx; |
| | | } |
| | | |
| | | // Fallback using Return-Path |
| | | if ($from_idx === null && $return_path) { |
| | | // Try Return-Path |
| | | if ($from_idx === null && ($return_path = $MESSAGE->headers->others['return-path'])) { |
| | | foreach ($MESSAGE->identities as $idx => $ident) { |
| | | if (strpos($return_path, str_replace('@', '=', $ident['email_ascii']).'@') !== false) { |
| | | $from_idx = $idx; |
| | |
| | | } |
| | | } |
| | | |
| | | // Fallback using Delivered-To |
| | | if ($from_idx === null && ($delivered_to = $MESSAGE->headers->others['delivered-to'])) { |
| | | foreach ($MESSAGE->identities as $idx => $ident) { |
| | | if (in_array($ident['email_ascii'], $delivered_to)) { |
| | | $from_idx = $idx; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | $ident = $MESSAGE->identities[$from_idx !== null ? $from_idx : $default_identity]; |
| | | $from_id = $ident['identity_id']; |
| | | |