let pp_received fmt r =
  let pp_elem fmt = function
    | `Addr v -> Address.pp_mailbox' fmt v
    | `Domain v -> Address.pp_domain fmt v
    | `Word v -> Address.pp_word fmt v
  in
  match r with
  | (l, Some date) ->
    pp fmt "Received = { @[<hov>%a;@ date = %a@] }"
      (pp_lst ~sep:(fun fmt () -> pp fmt "@ ") pp_elem) l
      Date.pp date
  | (l, None) ->
    pp fmt "Received = @[<hov>%a@]"
      (pp_lst ~sep:(fun fmt () -> pp fmt "@ ") pp_elem) l