Dovecot und Punkte im IMAP

Wenn man bei einen normal konfigurierten Dovecot einen IMAP-Ordner mit dem Namen “test@example.org” anlegt, wird man im Mailprogramm folgende Ordnerstruktur zu sehen bekommen:

test@example
    org

Der Grund ist darin zu finden, das der Punkt im Falle einer Maildir-Konfiguration standardmäßig als Trennzeichen eingerichtet ist. Möchte man trotzdem IMAP Ordner mit einem Punkt anlegen, so hilft das Dovecot-Plugin “Listescape”. Die Handhabung ist dabei denkbar einfach. In der “conf.d/20-imap.conf” wird dazu die auskommentierte Zeile:

#mail_plugins =

durch

mail_plugins = listescape

ersetzt. Nun muss in der Datei “10-mail.conf” im vordefinierten Namespace “inbox” der Seperator neu definiert werden:

namespace inbox {
  # Namespace type: private, shared or public
  #type = private

  separator = /

  ...
}

Er darf hier nicht auf einen Punkt gesetzt werden, da das ganze sonst nicht funktioniert. Nach einem anschließenden:

service dovecot restart

können dann auch neue Ordner mit einem Punkt im Namen angelegt werden. Auf bestehende Ordner wirkt sich das ganze allerdings nicht aus. Diese müssen bei Bedarf neu angelegt werden.

Mails von anderen Postfächern einsammeln

Seit einiger Zeit möchte ich gerne von Diensten wie Google Mail und Co. wegkommen. Dazu tragen mittlerweile auch die Enthüllungen aller PRISM und Tempora bei. Ein Feature welches sich bei Google Mail als sehr praktisch erwiesen hat, ist das Einsammeln von der Mails anderer Mailkonten. Nun ist es nicht so das es sich bei diesem Feature um Magie handelt, so das es Nahe lag das ganze in PHP nachzubauen:

<?php
  //Licensed under AGPL
  //by seeseekey

  //Configuration
  //Accounts to collect
  $collectAccounts["test@example.org"]["server"]="{mail.example.org/novalidate-cert}INBOX";
  $collectAccounts["test@example.org"]["username"]="user";
  $collectAccounts["test@example.org"]["passwort"]="secret";

  $collectAccounts["spam@example.org"]["server"]="{mail.example.org/novalidate-cert}INBOX";
  $collectAccounts["spam@example.org"]["username"]="user";
  $collectAccounts["spam@example.org"]["passwort"]="secret";

  //Target server
  $targetServer = "{mail.example.org/ssl/novalidate-cert}";
  $targetUsername = "user";
  $targetPassword = "secret";

  //Operate
  $mboxTarget = imap_open($targetServer, $targetUsername, $targetPassword) or die ("Failed with error: " . imap_last_error());

  //Quellpostfächer öffnen
  while (list($key,$value) = each($collectAccounts))
  {
    $mboxSource = imap_open($value["server"], $value["username"], $value["passwort"]) or die ("Failed with error: ".imap_last_error());
    $mailboxInformation = imap_check($mboxSource);
    $overviewSourceMailBox = imap_fetch_overview($mboxSource, "1:{$mailboxInformation->Nmsgs}", 0);

    //Create folder
    imap_createmailbox($mboxTarget, imap_utf7_encode("$targetServer$key"));

    foreach ($overviewSourceMailBox as $overview)
    {
      $message = imap_fetchheader($mboxSource, $overview->msgno) . imap_body($mboxSource, $overview->msgno);

      if(!imap_append($mboxTarget, mb_convert_encoding("$targetServer$key" . "" . "", "UTF7-IMAP", "ISO-8859-1"), $message,""))
      {
        die ("Error: ". imap_last_error());
      }

      //Mark mail from source mailbox as deleted
      imap_delete($mboxSource, $overview->msgno);
      }

    //Delete all marked mails and close connection to source mailbox
    imap_expunge($mboxSource);
    imap_close($mboxSource);
  }

  imap_close($mboxTarget);
?>

In dem Skript gibt man dabei oben die Konten an von welchen eingesammelt werden soll. Daneben wird natürlich auch das Zielkonto definiert. Der erste Parameter von “$collectAccounts” definiert dabei den Ordner in welchen die Mails im Zielkonto geschoben werden. Der Quellcode ist auf GitHub zu finden und steht unter der AGPL.

Gmail, der “Chats”-Ordner und IMAP

Da ich GMail auch per IMAP nutze, war ich recht verwundert, das der Ordner “Chats” nicht auftauchte. Nachdem ich ausgeschlossen hatte, das Thunderbird das Problem ist, blieb nur noch Gmail übrig. In den Einstellungen unter “Labels” fand sich dann der Übeltäter.

Dort muss der Haken bei “In IMAP anzeigen” ausgewählt sein. Danach klappt es auch mit dem IMAP im Thunderbird.

Google Mail und POP3 sowie IMAP

Google Mail kann man seit einiger Zeit auch per POP3 sowie IMAP benutzen. Dazu sind natürlich die passenden Server notwendig die wie folgt lauten:

POP3
Server: pop.gmail.com
Port: 995
SSL: Ja

Benutzername: “Google Mail Adresse”
Password: “Google Mail Passwort”

SMTP
Server: smtp.gmail.com
Port: 465 or 587
SSL: Ja
Require SMTP authentication: Yes

Benutzername: “Google Mail Adresse”
Password: “Google Mail Passwort”

IMAP
Server: imap.gmail.com
Port: 993
SSL: Ja

Benutzername: “Google Mail Adresse”
Password: “Google Mail Passwort”