package.xml 100644 764 144 14466 100644 6250
Mail_Mboxpear.php.netRead and modify Unix MBOXesIt can split messages inside a Mbox, return the number of messages, return,
update or remove an specific message or add a message on the Mbox.Roberto Bertodarkelderdarkelder@php.netyesChristian Weiskecweiskecweiske@php.netyes2009-11-110.6.30.6.2betabetaLGPL
- Fix bug: "From " lines were escaped midst of text, which violates the spec
4.3.31.4.10.6.30.6.2betabeta2009-11-11
- Fix bug: "From " lines were escaped midst of text, which violates the spec
0.6.20.6.2betabeta2009-11-10
- Fix bug #16758: Messages split incorrectly
0.6.10.6.0betabeta2009-10-09
- Fix bug #16668: Mbox doesn't work in suid/sgid scripts [vaceletm]
0.6.00.6.0betabeta2009-08-02
- Implement request #16487: Insert on new box throws warning [cweiske]
0.5.20.5.1betabeta2009-08-02
- Fix bug #15559: Inserting new message to a Mbox is not guaranteed to produce a valid Mbox [cweiske]
0.5.10.5.1betabeta2006-08-01
- Use copy/unlink internally instead of copying the file bit-by-bit
- Added append() method since it's faster than the old insert()
- Added autoReload property to make adding many messages faster
0.5.00.5.0betabeta2006-06-23
- Use class features (one mbox per instance)
- Broke BC
- Checks for file modification, so that mbox doesn't get corrupt.
0.3.00.3.0betabeta2004-11-01
o improved _process() speed to read line per line instead of byte per byte. (Joern)
0.2.00.2.0alphaalpha2004-10-06
o fixed mbox::size() bug that have never return 0 (Roger Keays)
o mbox::remove() now accept arrays on $message param as well (Roger Keays)
o declarated all vars to skip php warnings on high warning levels (Roger Keays)
o some minor spelling errors (Roger Keays)
o fwrite must use '===' false instead of !fwrite (Roger Keays)
0.1.50.1.5alphaalpha2002-12-29
o Security fix (changed umask on temp files)
o Improved stylistcs with new Jon Parise patch
o Fixed error on license at project.xml (it isnt really PHP license, it is LGPL)
0.1.40.1.4alphaalpha2002-12-28
o Joined mbox_test.php and mbox.php
0.1.30.1.3alphaalpha2002-12-28
o Changed Jon Parise stylistics things
Mail_Mbox-0.6.3/Mail/Mbox.php 100644 764 144 60132 100644 10733
* @author Christian Weiske
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @version CVS: $Id: Mbox.php 290486 2009-11-10 20:42:51Z cweiske $
* @link http://pear.php.net/package/Mail_Mbox
*/
require_once 'PEAR.php';
/**
* The file has been modified since it has been opened.
* You should close and re-open it.
*/
define('MAIL_MBOX_ERROR_MODIFIED', 2101);
/**
* The mail mbox file doesn't exist.
*/
define('MAIL_MBOX_ERROR_FILE_NOT_EXISTING', 2102);
/**
* There is no message with the given number.
*/
define('MAIL_MBOX_ERROR_MESSAGE_NOT_EXISTING', 2103);
/**
* No permission to access the file.
*/
define('MAIL_MBOX_ERROR_NO_PERMISSION', 2104);
/**
* The file cannot be opened.
*/
define('MAIL_MBOX_ERROR_CANNOT_OPEN', 2105);
/**
* The file cannot be closed due to some strange things.
*/
define('MAIL_MBOX_ERROR_CANNOT_CLOSE', 2106);
/**
* The file cannot be read.
*/
define('MAIL_MBOX_ERROR_CANNOT_READ', 2107);
/**
* Failed to create a temporary file.
*/
define('MAIL_MBOX_ERROR_CANNOT_CREATE_TMP', 2108);
/**
* The file cannot be written.
*/
define('MAIL_MBOX_ERROR_CANNOT_WRITE', 2109);
/**
* The file is not open.
*/
define('MAIL_MBOX_ERROR_NOT_OPEN', 2110);
/**
* The resource isn't valid anymore.
*/
define('MAIL_MBOX_ERROR_NO_RESOURCE', 2111);
/**
* Message is invalid and would trash the file
*/
define('MAIL_MBOX_ERROR_MSG_INVALID', 2112);
/**
* Class to read mbox mail files.
*
* An mbox mail file is contains plain emails concatenated in one
* big file. Since each mail starts with "From ", and ends with a newline,
* they can be separated from each other.
*
* This class takes a mbox filename in the constructor, generates an
* index where the mails start and end when calling open() and returns
* single mails with get(), using the positions in the index.
*
* With the help of this class, you also can add(), remove() and update()
* messages in the mbox file. When calling one of this methods, the class
* checks if the file has been modified since the index was created -
* changing the file with the wrong positions in the index would very likely
* corrupt it.
* This check is not done when retrieving single messages via get(), as this
* would slow down the process if you retrieve thousands of mails. You can,
* however, call hasBeenModified() before using get() to check for modification
* yourself. If the method returns true, you should close() and re-open() the
* file.
*
* If something strange happens and you don't know why, activate debugging with
* setDebug(true). You also can modify the temporary directory in which changed
* mboxes are stored when adding/removing/modifying by using setTmpDir('/path/');
*
* See @link tags for specifications.
*
* @category Mail
* @package Mail_Mbox
* @author Roberto Berto
* @author Christian Weiske
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @link http://pear.php.net/package/Mail_Mbox
* @link http://en.wikipedia.org/wiki/Mbox
* @link http://www.qmail.org/man/man5/mbox.html
*/
class Mail_Mbox extends PEAR
{
/**
* File resource / handle
*
* @var resource
* @access protected
*/
var $_resource = null;
/**
* Message index. Each mail has its own subarray,
* which contains the start position and end position
* as first and second subindex.
*
* @var array
* @access protected
*/
var $_index = null;
/**
* Timestamp at which the file has been modified last.
*
* @var int
* @access protected
*/
var $_lastModified = null;
/**
* Debug mode
*
* Set to true to turn on debug mode.
*
* @var bool
* @access public
* @see setDebug()
* @see getDebug()
*/
var $debug = false;
/**
* Directory in which the temporary mbox files are created.
* Even if it's a unix directory, it does work on windows as
* the only function it's used in is tempnam which automatically
* chooses the right temp directory if this here doesn't exist.
* So this variable is for special needs only.
*
* @var string
* @access public
* @see getTmpDir()
* @see setTmpDir()
*/
var $tmpdir = '/tmp';
/**
* Determines if the file is automatically re-opened and its
* structure is parsed after modifying it. Setting this to false
* makes you responsible for calling open() by hand, but is
* *a lot* faster when appending many messages.
*
* @var bool
* @access public
*/
var $autoReopen = true;
/**
* Create a new Mbox class instance.
* After creating it, you should use open().
*
* @param string $file Filename to open.
*
* @access public
*/
function Mail_Mbox($file)
{
$this->_file = $file;
}
/**
* Open the mbox file
*
* Also, this function will process the Mbox and create a cache
* that tells each message start and end bytes.
*
* @return boolean|PEAR_Error True if all went ok, PEAR_Error on failure
* @access public
*/
function open($create = false)
{
// check if file exists else return pear error
if (!is_file($this->_file)) {
if ($create) {
$ret = $this->_create();
if (PEAR::isError($ret)) {
return $ret;
}
} else {
return PEAR::raiseError(
'Cannot open the mbox file "'
. $this->_file . '": file does not exist.',
MAIL_MBOX_ERROR_FILE_NOT_EXISTING
);
}
}
// opening the file
$this->_lastModified = filemtime($this->_file);
$this->_resource = fopen($this->_file, 'r');
if (!is_resource($this->_resource)) {
return PEAR::raiseError(
'Cannot open the mbox file: maybe without permission.',
MAIL_MBOX_ERROR_NO_PERMISSION
);
}
// process the file and get the messages bytes offsets
$this->_process();
return true;
}
/**
* Creates the file
*
* @return boolean True if it was created, false if it already
* existed. PEAR_Error in case it could not
* be created.
*
* @access protected
*/
function _create()
{
if (is_file($this->_file)) {
return false;
}
//We should maybe try to check if the directory
// is writable here. But that's too much fuss for now.
touch($this->_file);
if (is_file($this->_file)) {
return true;
}
//error
return PEAR::raiseError(
'File could not be created',
MAIL_MBOX_ERROR_CANNOT_WRITE
);
}
/**
* Re-opens the file and parses the messages again.
* Used by other methods to be able to be able to prevent
* re-opening the file.
*
* @return mixed See open() for return values. Returns true if
* $this->autoReopen is false.
* @access protected
*/
function _reopen()
{
if ($this->autoReopen) {
return $this->open();
}
return true;
}
/**
* Close a Mbox
*
* Close the Mbox file opened by open()
*
* @return mixed true on success, else PEAR_Error
* @access public
*/
function close()
{
if (!is_resource($this->_resource)) {
return PEAR::raiseError(
'Cannot close the mbox file because it was not open.',
MAIL_MBOX_ERROR_NOT_OPEN
);
}
if (!fclose($this->_resource)) {
return PEAR::raiseError(
'Cannot close the mbox, maybe file is being used (?)',
MAIL_MBOX_ERROR_CANNOT_CLOSE
);
}
return true;
}
/**
* Get number of messages in this mbox
*
* @return int Number of messages on Mbox (starting on 1,
* 0 if no message exists)
* @access public
*/
function size()
{
if ($this->_index !== null) {
return sizeof($this->_index);
} else {
return 0;
}
}
/**
* Get a message from the mbox
*
* Note: Message numbers start from 0.
*
* @param int $message The number of the message to retrieve
*
* @return string Return the message, PEAR_Error on error
* @access public
*/
function get($message)
{
// checking if we have bytes locations for this message
if (!is_array($this->_index[$message])) {
return PEAR::raiseError(
'Message does not exist.',
MAIL_MBOX_ERROR_MESSAGE_NOT_EXISTING
);
}
// getting bytes locations
$bytesStart = $this->_index[$message][0];
$bytesEnd = $this->_index[$message][1];
// a debug feature to show the bytes locations
if ($this->debug) {
printf("%08d=%08d ", $bytesStart, $bytesEnd);
}
if (!is_resource($this->_resource)) {
return PEAR::raiseError(
'Mbox resource is not valid. Maybe you need to re-open it?',
MAIL_MBOX_ERROR_NO_RESOURCE
);
}
// seek to start of message
if (fseek($this->_resource, $bytesStart) == -1) {
return PEAR::raiseError(
'Cannot read message bytes',
MAIL_MBOX_ERROR_CANNOT_READ
);
}
if ($bytesEnd - $bytesStart <= 0) {
return PEAR::raiseError(
'Message byte length is negative',
MAIL_MBOX_ERROR_CANNOT_READ
);
}
// reading and returning message
// (bytes to read = difference of bytes locations)
$msg = fread($this->_resource, $bytesEnd - $bytesStart);
return $this->_unescapeMessage($msg);
}
/**
* Remove a message from Mbox and save it.
*
* Note: messages start with 0.
*
* @param int $message The number of the message to remove, or
* array of message ids to remove
*
* @return mixed Return true else PEAR_Error
* @access public
*/
function remove($message)
{
if ($this->hasBeenModified()) {
return PEAR::raiseError(
'File has been modified since loading. Re-open the file.',
MAIL_MBOX_ERROR_MODIFIED
);
}
// convert single message to array
if (!is_array($message)) {
$message = array($message);
}
// checking if we have bytes locations for this message
foreach ($message as $msg) {
if (!isset($this->_index[$msg])
|| !is_array($this->_index[$msg])
) {
return PEAR::raiseError(
'Message ' . $msg . 'does not exist.',
MAIL_MBOX_ERROR_MESSAGE_NOT_EXISTING
);
}
}
// changing umask for security reasons
$umaskOld = umask(077);
// creating temp file
$ftempname = tempnam($this->tmpdir, 'Mail_Mbox');
// returning to old umask
umask($umaskOld);
$ftemp = fopen($ftempname, 'w');
if ($ftemp === false) {
return PEAR::raiseError(
'Cannot create a temp file "' . $ftempname . '".',
MAIL_MBOX_ERROR_CANNOT_CREATE_TMP
);
}
// writing only undeleted messages
$messages = $this->size();
for ($x = 0; $x < $messages; $x++) {
if (in_array($x, $message)) {
continue;
}
$messageThis = $this->_escapeMessage($this->get($x));
if (is_string($messageThis)) {
fwrite($ftemp, $messageThis, strlen($messageThis));
}
}
// closing file
$this->close();
fclose($ftemp);
return $this->_move($ftempname, $this->_file);
}
/**
* Update a message
*
* Note: messages start with 0.
*
* @param int $message The number of Message to update
* @param string $content The new content of the Message
*
* @return mixed Return true if all is ok, else PEAR_Error
* @access public
*/
function update($message, $content)
{
if (!$this->_isValid($content)) {
return PEAR::raiseError(
'Message is invalid', MAIL_MBOX_ERROR_MSG_INVALID
);
}
if ($this->hasBeenModified()) {
return PEAR::raiseError(
'File has been modified since loading. Re-open the file.',
MAIL_MBOX_ERROR_MODIFIED
);
}
// checking if we have bytes locations for this message
if (!is_array($this->_index[$message])) {
return PEAR::raiseError(
'Message does not exist.',
MAIL_MBOX_ERROR_MESSAGE_NOT_EXISTING
);
}
// creating temp file
$ftempname = tempnam($this->tmpdir, 'Mail_Mbox');
$ftemp = fopen($ftempname, 'w');
if ($ftemp === false) {
return PEAR::raiseError(
'Cannot create temp file "' . $ftempname . '" .',
MAIL_MBOX_ERROR_CANNOT_CREATE_TMP
);
}
$messages = $this->size();
for ($x = 0; $x < $messages; $x++) {
if ($x == $message) {
$messageThis = $content;
} else {
$messageThis = $this->get($x);
}
if (is_string($messageThis)) {
$messageThis = $this->_escapeMessage($messageThis);
fwrite($ftemp, $messageThis, strlen($messageThis));
}
}
// closing file
$this->close();
fclose($ftemp);
return $this->_move($ftempname, $this->_file);
}
/**
* Insert a message
*
* PEAR::Mail_Mbox will insert the message according its offset.
* 0 means before the actual message 0. 3 means before the message 3
* (Remember: message 3 is the fourth message). The default is put
* AFTER the last message (offset = null).
*
* @param string $content The content of the new message
* @param int $offset Before the offset. Default: last message (null)
*
* @return mixed Return true else PEAR_Error object
* @access public
*/
function insert($content, $offset = null)
{
if (!$this->_isValid($content)) {
return PEAR::raiseError(
'Message is invalid', MAIL_MBOX_ERROR_MSG_INVALID
);
}
if ($this->hasBeenModified()) {
return PEAR::raiseError(
'File has been modified since loading. Re-open the file.',
MAIL_MBOX_ERROR_MODIFIED
);
}
// optimize insert() to use append whenever possible
if ($offset < 0 || $offset == $this->size() || $this->size() == 0) {
return $this->append($content);
}
// creating temp file
$ftempname = tempnam($this->tmpdir, 'Mail_Mbox');
$ftemp = fopen($ftempname, 'w');
if ($ftemp === false) {
return PEAR::raiseError(
'Cannot create temp file "' . $ftempname . '".',
MAIL_MBOX_ERROR_CANNOT_CREATE_TMP
);
}
// writing only undeleted messages
$messages = $this->size();
$content = $this->_escapeMessage($content);
if ($messages == 0 && $offset !== null) {
fwrite($ftemp, $content, strlen($content));
} else {
for ($x = 0; $x < $messages; $x++) {
if ($offset !== null && $x == $offset) {
fwrite($ftemp, $content, strlen($content));
}
$messageThis = $this->_escapeMessage($this->get($x));
if (is_string($messageThis)) {
fwrite($ftemp, $messageThis, strlen($messageThis));
}
}
}
if ($offset === null) {
fwrite($ftemp, $content, strlen($content));
}
// closing file
$this->close();
fclose($ftemp);
return $this->_move($ftempname, $this->_file);
}
/**
* Appends a message at the end of the file.
*
* This method is also used by insert() since it's faster.
*
* @param string $content The content of the new message
*
* @return mixed Return true else PEAR_Error object
* @access public
*/
function append($content)
{
if (!$this->_isValid($content)) {
return PEAR::raiseError(
'Message is invalid', MAIL_MBOX_ERROR_MSG_INVALID
);
}
$this->close();
$content = $this->_escapeMessage($content);
$fp = fopen($this->_file, 'a');
if ($fp === false) {
return PEAR::raiseError(
'Cannot open file "' . $this->_file . '" for appending.',
MAIL_MBOX_ERROR_CANNOT_OPEN
);
}
if (fwrite($fp, $content, strlen($content)) === false) {
return PEAR::raiseError(
'Cannot write to file "' . $this->_file. '".',
MAIL_MBOX_ERROR_CANNOT_WRITE
);
}
return $this->_reopen();
}
/**
* Checks if the given message is valid.
* If it was invalid and we'd add it to the file,
* it would get unreadable
*
* @param string $content Message to be added or updated
*
* @return boolean True if it is valid, false if not
*/
function _isValid($content)
{
if (substr($content, 0, 5) != 'From ') {
return false;
}
return true;
}
/**
* Move a file to another.
*
* Used internally to move the content of the temp file to the mbox file.
* Note that we can't use rename() internally, as it behaves very, very
* strange on windows.
*
* @param string $ftempname Source file - will be removed
* @param string $filename Output file
*
* @return boolean|PEAR_Error True if everything went fine, PEAR_Error when
* an error happened.
* @access protected
*/
function _move($ftempname, $filename)
{
if (!copy($ftempname, $filename)) {
return PEAR::raiseError(
'Cannot copy "' . $ftempname . '" to "' . $filename . '".',
MAIL_MBOX_ERROR_CANNOT_WRITE
);
}
unlink($ftempname);
// open another resource and substitute it to the old one
$this->_file = $filename;
return $this->_reopen();
}
/**
* Process the Mbox
*
* Put start bytes and end bytes of each message into _index array
*
* @return boolean|PEAR_Error True if all went ok, PEAR_Error on failure
* @access protected
*/
function _process()
{
$this->_index = array();
// sanity check
if (!is_resource($this->_resource)) {
return PEAR::raiseError(
'Resource is not valid. Maybe the file has not be opened?',
MAIL_MBOX_ERROR_NOT_OPEN
);
}
// going to start
if (fseek($this->_resource, 0) == -1) {
return PEAR::raiseError(
'Cannot read mbox',
MAIL_MBOX_ERROR_CANNOT_READ
);
}
// current start byte position
$start = 0;
// last start byte position
$laststart = 0;
// there aren't any message
$hasmessage = false;
while ($line = fgets($this->_resource, 4096)) {
// if line start with "From ", it is a new message
if (0 === strncmp($line, 'From ', 5)) {
// save last start byte position
$laststart = $start;
// new start byte position is the start of the line
$start = ftell($this->_resource) - strlen($line);
// if it is not the first message add message positions
if ($start > 0) {
$this->_index[] = array($laststart, $start - 1);
} else {
// tell that there is really a message on the file
$hasmessage = true;
}
}
}
// if there are just one message, or if it's the last one,
// add it to messages positions
if (($start == 0 && $hasmessage === true) || ($start > 0)) {
$this->_index[] = array($start, ftell($this->_resource));
}
return true;
}
/**
* Quotes "From " lines in the midst of the message.
* And quoted "From " lines, too :)
* Also appends the trailing newline.
* After escaping, the message can be written to file.
*
* @param string $message Message content
*
* @return string Escaped message
*
* @access protected
* @see _unescapeMessage()
*/
function _escapeMessage($message)
{
if (substr($message, -1) == "\n") {
$message .= "\n";
} else {
$message .= "\n\n";
}
return preg_replace(
"/\n([>]*From )/",
"\n>$1",
$message
);
}
/**
* Removes quoted "From " lines from the message
*
* @param string $message Message content
*
* @return string Unescaped message
*
* @access protected
* @see _escapeMessage()
*/
function _unescapeMessage($message)
{
return preg_replace(
"/\n>([>]*From )/",
"\n$1",
//the -1 drops the last newline
substr($message, 0, -1)
);
}
/**
* Checks if the file was modified since it has been loaded.
* If this is true, the file needs to be re-opened.
*
* @return bool True if it has been modified.
* @access public
*/
function hasBeenModified()
{
return filemtime($this->_file) > $this->_lastModified;
}
/*
* Dumb getter and setter
*/
/**
* Set the directory for temporary files.
*
* @param string $tmpdir The new temporary directory
*
* @return mixed True if all is ok, PEAR_Error if $tmpdir
* is a dir but not writable
*
* @see Mail_Mbox::$tmpdir
*/
function setTmpDir($tmpdir)
{
if (is_dir($tmpdir) && !is_writable($tmpdir)) {
return PEAR::raiseError(
'"' . $tmpdir . '" is not writable.',
MAIL_MBOX_ERROR_CANNOT_WRITE
);
} else {
$this->tmpdir = $tmpdir;
return true;
}
}
/**
* Returns the temporary directory
*
* @return string The temporary directory
*/
function getTmpDir()
{
return $this->tmpdir;
}
/**
* Set the debug flag
*
* @param bool $debug If debug is on or off
*
* @return void
* @see Mail_Mbox::$debug
*/
function setDebug($debug)
{
$this->debug = (bool)$debug;
}
/**
* Returns the debug flag setting
*
* @see Mail_Mbox::$debug
*
* @return bool If debug is enabled.
*/
function getDebug()
{
return $this->debug;
}
/**
* Sets if the mbox is reloaded after modification
* automatically.
*
* @param bool $autoReopen If the mbox is reloaded automatically
*
* @return void
* @see Mail_Mbox::$autoReopen
*/
function setAutoReopen($autoReopen)
{
$this->autoReopen = (bool)$autoReopen;
}
/**
* Returns the automatically reopening setting
*
* @return bool If the mbox is reloaded automatically.
*
* @see Mail_Mbox::$autoReopen
*/
function getAutoReopen()
{
return $this->autoReopen;
}
}
?>
Mail_Mbox-0.6.3/examples/demobox 100644 764 144 7764 100644 11625 From - Thu Jun 22 18:09:01 2006
X-Account-Key: account4
X-UIDL: UID20394-1133961700
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
X-Greylist: delayed 1778 seconds by postgrey-1.21 at d80-237-146-62.dds.hosteurope.de; Thu, 22 Jun 2006 18:07:43 CEST
Received: from fallback-mx1.atl.registeredsite.com (fallback-mx1.atl.registeredsite.com [64.224.219.95])
by mail.cweiske.de (Postfix) with ESMTP id 92DF53F8A003
for ; Thu, 22 Jun 2006 18:07:43 +0200 (CEST)
Received: from mail24.atl.registeredsite.com (mail24.atl.registeredsite.com [216.247.37.44])
by fallback-mx1.atl.registeredsite.com (8.12.11.20060308/8.12.11) with ESMTP id k5MFZecD006152
for ; Thu, 22 Jun 2006 11:35:40 -0400
Received: from imta01a2.registeredsite.com (imta01a2.registeredsite.com [64.225.255.10])
by mail24.atl.registeredsite.com (8.12.11.20060308/8.12.11) with ESMTP id k5MFZaUT012752
for ; Thu, 22 Jun 2006 11:35:36 -0400
Received: from [10.0.0.27] ([207.191.201.224])
by imta01a2.registeredsite.com with ESMTP
id <20060622153536.OUNZ4714.imta01a2.registeredsite.com@[10.0.0.27]>
for ; Thu, 22 Jun 2006 11:35:36 -0400
Message-ID: <449AB8C7.1000104@abcdefg-test.com>
Date: Thu, 22 Jun 2006 10:35:35 -0500
From: Jay Vavra
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060516 Thunderbird/1.5.0.4 Mnenhy/0.7.4.0
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: This is the first message
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
My own hands[TM]
From - Thu Jun 22 22:10:17 2006
X-Account-Key: account4
X-UIDL: UID20419-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
Received: from mail4.ewetel.de (mail4.ewetel.de [212.6.122.29])
by mail.cweiske.de (Postfix) with ESMTP id 9EB743F8A003
for ; Thu, 22 Jun 2006 22:02:25 +0200 (CEST)
Received: from [192.168.178.25] (dynadsl-080-228-67-242.ewetel.net [80.228.67.242])
by mail4.ewetel.de (8.12.1/8.12.9) with ESMTP id k5MK2OS2006524
for ; Thu, 22 Jun 2006 22:02:24 +0200 (MEST)
Message-ID: <449AF74D.3030803@gmx.de>
Date: Thu, 22 Jun 2006 22:02:21 +0200
From: Some Name
User-Agent: Thunderbird 1.5.0.4 (Windows/20060516)
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: Oh my god
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
X-CheckCompat: OK
neXus MIME Mail - PHP/5.1.1
From - Fri Jun 23 06:55:39 2006
X-Account-Key: account4
X-UIDL: UID20427-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
X-Greylist: delayed 720 seconds by postgrey-1.21 at d80-237-146-62.dds.hosteurope.de; Fri, 23 Jun 2006 00:32:12 CEST
Received: from mx18.yandex.ru (smtp2.yandex.ru [213.180.200.18])
by mail.cweiske.de (Postfix) with ESMTP id 0E7213F8A003
for ; Fri, 23 Jun 2006 00:32:12 +0200 (CEST)
Received: from ip16.174.adsl.wplus.ru ([195.131.174.16]:54797 "EHLO
[195.131.174.16]" smtp-auth: "pluton131" TLS-CIPHER:
TLS-PEER-CN1: ) by mail.yandex.ru with ESMTP id S3377100AbWFVWUF
(ORCPT ); Fri, 23 Jun 2006 02:20:05 +0400
X-Comment: RFC 2476 MSA function at smtp2.yandex.ru logged sender identity as: pluton131
Message-ID: <449B1794.20706@yandex.ru>
Date: Fri, 23 Jun 2006 02:20:04 +0400
From: Spari
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.4) Gecko/20060516 Mozilla Thunderbird/1.5 Mnenhy/0.7.4.0
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: Hello my dear!
X-Enigmail-Version: 0.94.0.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
I just wanted to say hello
Mail_Mbox-0.6.3/examples/mimedecode.php 100644 764 144 1255 100644 13036 open();
for ($n = 0; $n < $mbox->size(); $n++) {
$message = $mbox->get($n);
$decode = new Mail_mimeDecode($message, "\r\n");
$structure = $decode->decode();
echo 'Mail #' . $n . "\n";
// print_r($structure);
echo 'Subject: ' . $structure->headers['subject'] . "\n";
echo 'From: ' . $structure->headers['from'] . "\n";
echo "\n";
}
$mbox->close();
?> Mail_Mbox-0.6.3/examples/modify.php 100644 764 144 2403 100644 12226 size() . ' messages.' . "\n";
for ($n = 0; $n < $mbox->size(); $n++) {
$message = $mbox->get($n);
preg_match('/Subject: (.*)$/m', $message, $matches);
$subject = $matches[1];
echo 'Mail #' . $n . ': ' . $subject . "\n";
}
echo "\n";
}
//make a copy of the demo file
$original = dirname(__FILE__) . '/demobox';
$file = tempnam('/tmp', 'mbox-copy-');
copy($original, $file);
echo 'Using file ' . $file . "\n";
$mbox = new Mail_Mbox($file);
$mbox->open();
listSubjects($mbox);
echo 'append a message to the end of the box' . "\n";
$message = $mbox->get(0) . "\n" . 'This is a copy of the mail';
$mbox->insert($message);
listSubjects($mbox);
echo 'insert a message before the second message' . "\n";
$message = $mbox->get(0) . "\n" . 'This is another copy of the mail';
$mbox->insert($message, 1);
listSubjects($mbox);
echo 'remove the last message' . "\n";
$mbox->remove(
$mbox->size() - 1
);
listSubjects($mbox);
echo 'remove the first two messages' . "\n";
$mbox->remove(array(0, 1));
listSubjects($mbox);
$mbox->close();
//remove the tmp file
unlink($file);
?> Mail_Mbox-0.6.3/examples/read.php 100644 764 144 677 100644 11645 open();
for ($n = 0; $n < $mbox->size(); $n++) {
$message = $mbox->get($n);
preg_match('/Subject: (.*)$/m', $message, $matches);
$subject = $matches[1];
echo 'Mail #' . $n . ': ' . $subject . "\n";
}
$mbox->close();
?> Mail_Mbox-0.6.3/tests/AllTests.php 100644 764 144 1143 100644 12016 addTestSuite('Mail_MboxTest');
return $suite;
}
}
if (PHPUnit_MAIN_METHOD == 'Mail_Mbox_AllTests::main') {
Mail_Mbox_AllTests::main();
}
?> Mail_Mbox-0.6.3/tests/Mail_MboxTest.php 100644 764 144 36446 100644 13030
*/
class Mail_MboxTest extends PHPUnit_Framework_TestCase
{
protected static $file = null;
protected static $filecopy = null;
/**
* Runs the test methods of this class.
*
* @access public
* @static
*/
public static function main() {
require_once 'PHPUnit/TextUI/TestRunner.php';
$suite = new PHPUnit_Framework_TestSuite('Mail_MboxTest');
$result = PHPUnit_TextUI_TestRunner::run($suite);
}
/**
* Sets up the fixture, for example, open a network connection.
* This method is called before a test is executed.
*
* @access protected
*/
protected function setUp() {
chdir(dirname(__FILE__) . '/../');
Mail_MboxTest::$file = dirname(__FILE__) . '/testbox';
Mail_MboxTest::$filecopy = tempnam('/tmp', 'Mail_MboxTestcopy');
$this->mbox = new Mail_Mbox(Mail_MboxTest::$file);
$this->assertTrue($this->mbox->open());
}
/**
* Tears down the fixture, for example, close a network connection.
* This method is called after a test is executed.
*
* @access protected
*/
protected function tearDown() {
$this->mbox->close();
//remove the tmp file
unlink(Mail_MboxTest::$filecopy);
}
/**
* opens the file
*/
public function testOpen() {
$this->assertEquals(11, $this->mbox->size());
}
/**
* closes the file pointer
*/
public function testClose() {
$this->assertTrue($this->mbox->close());
$this->assertType('PEAR_Error', $this->mbox->close());
}
/**
* returns the number of messages
*/
public function testSize() {
$this->assertEquals(11, $this->mbox->size());
}
/**
* Returns a message
*/
public function testGet() {
$msg = $this->mbox->get(0);
$this->assertContains('My own hands[TM]', $msg);
$msg = $this->mbox->get(2);
$this->assertContains('somebody@yandex.ru', $msg);
$mbox2 = new Mail_Mbox(Mail_MboxTest::$file);
$this->assertType('PEAR_Error', $mbox2->get(0));
}
/**
* Removes a message
*/
public function testRemove() {
$this->copy();
$mbox = new Mail_Mbox(Mail_MboxTest::$filecopy);
$this->assertTrue($mbox->open());
$this->assertTrue($mbox->remove(0));
$this->assertEquals(10, $mbox->size());
//Shouldn't exist any more
$this->assertNotContains('My own hands[TM]', $mbox->get(0));
$this->assertContains('neXus MIME Mail', $mbox->get(0));
$this->assertTrue($mbox->remove(
array(0, 1, 2, 3, 4, 5, 9)
));
$this->assertEquals(3, $mbox->size());
$this->assertContains('CME-V6.5.4.3', $mbox->get(0));
$this->assertTrue($mbox->close());
}
/**
* Update a message
*/
public function testUpdate() {
$this->copy();
$mbox = new Mail_Mbox(Mail_MboxTest::$filecopy);
$this->assertTrue($mbox->open());
$this->assertEquals(11, $mbox->size());
$this->assertNotContains('Hoppla', $mbox->get(0));
$this->assertTrue(
$mbox->update(0, $mbox->get(0) . 'Hoppla')
);
$this->assertContains('Hoppla', $mbox->get(0));
$this->assertTrue($mbox->close());
}
/**
* Insert a new email
*/
public function testInsert() {
$this->copy();
$mbox = new Mail_Mbox(Mail_MboxTest::$filecopy);
$this->assertTrue($mbox->open());
$this->assertEquals(11, $mbox->size());
//insert at the end
$this->assertTrue($mbox->insert(
$mbox->get(0)
));
$this->assertEquals(12, $mbox->size());
$this->assertContains('My own hands', $mbox->get(11));
//insert at the end
$this->assertTrue($mbox->insert(
$mbox->get(0), -1
));
$this->assertEquals(13, $mbox->size());
$this->assertContains('My own hands', $mbox->get(12));
//insert at the end
$this->assertTrue($mbox->insert(
$mbox->get(0), null
));
$this->assertEquals(14, $mbox->size());
$this->assertContains('My own hands', $mbox->get(13));
//insert after first message
$this->assertNotContains('My own hands', $mbox->get(1));
$this->assertTrue($mbox->insert(
$mbox->get(0), 1
));
$this->assertEquals(15, $mbox->size());
$this->assertContains('My own hands', $mbox->get(1));
$this->assertTrue($mbox->close());
}
/**
* Insert and invalid message
*/
public function testInsertInvalid() {
$this->copy();
$mbox = new Mail_Mbox(Mail_MboxTest::$filecopy);
$this->assertTrue($mbox->open());
$err = $mbox->insert('this is not valid', 0);
$this->assertType('PEAR_Error', $err);
$this->assertEquals(MAIL_MBOX_ERROR_MSG_INVALID, $err->getCode());
}
/**
* Append an email to the end of the thingy
*/
public function testAppend() {
$this->copy();
$mbox = new Mail_Mbox(Mail_MboxTest::$filecopy);
$this->assertTrue($mbox->open());
$this->assertEquals(11, $mbox->size());
$this->assertTrue($mbox->append(
$mbox->get(0)
));
$this->assertEquals(12, $mbox->size());
$this->assertContains('My own hands', $mbox->get(11));
$this->assertTrue($mbox->append(
$mbox->get(0)
));
$this->assertTrue($mbox->append(
$mbox->get(0)
));
$this->assertTrue($mbox->append(
$mbox->get(0)
));
$this->assertEquals(15, $mbox->size());
$this->assertContains('My own hands', $mbox->get(12));
$this->assertContains('My own hands', $mbox->get(13));
$this->assertContains('My own hands', $mbox->get(14));
}
/**
* Append an invalid message
*/
public function testAppendInvalid() {
$this->copy();
$mbox = new Mail_Mbox(Mail_MboxTest::$filecopy);
$this->assertTrue($mbox->open());
$err = $mbox->append('this is invalid');
$this->assertType('PEAR_Error', $err);
$this->assertEquals(MAIL_MBOX_ERROR_MSG_INVALID, $err->getCode());
}
/**
* Append an email to the end of the thingy
* without using auto-reopen.
*/
public function testAppendNoReopen() {
$this->copy();
$mbox = new Mail_Mbox(Mail_MboxTest::$filecopy);
$mbox->setAutoReopen(false);
$this->assertTrue($mbox->open());
$this->assertEquals(11, $mbox->size());
$zero = $mbox->get(0);
$this->assertTrue($mbox->append(
$zero
));
//should still be 11, since not reloaded
$this->assertEquals(11, $mbox->size());
$this->assertTrue($mbox->open());
$this->assertEquals(12, $mbox->size());
$this->assertContains('My own hands', $mbox->get(11));
$this->assertTrue($mbox->append(
$zero
));
$this->assertTrue($mbox->append(
$zero
));
$this->assertTrue($mbox->append(
$zero
));
//still 12
$this->assertEquals(12, $mbox->size());
$this->assertTrue($mbox->open());
$this->assertEquals(15, $mbox->size());
$this->assertContains('My own hands', $mbox->get(12));
$this->assertContains('My own hands', $mbox->get(13));
$this->assertContains('My own hands', $mbox->get(14));
}
/**
* Update to an invalid message
*/
public function testUpdateInvalid() {
$this->copy();
$mbox = new Mail_Mbox(Mail_MboxTest::$filecopy);
$this->assertTrue($mbox->open());
$err = $mbox->update(0, 'this is invalid');
$this->assertType('PEAR_Error', $err);
$this->assertEquals(MAIL_MBOX_ERROR_MSG_INVALID, $err->getCode());
}
/**
* Moves a file
*/
public function test_move() {
$file = tempnam('/tmp', 'Mail_MboxTest');
$file2 = $file . 'second';
$this->assertTrue(file_exists($file));
$this->assertFalse(file_exists($file2));
$mbox = new Mail_Mbox($file);
$this->assertTrue(file_exists($file));
$this->assertEquals(0, $mbox->size());
$this->assertTrue($mbox->_move($file, $file2));
$this->assertTrue(file_exists($file2));
$this->assertFalse(file_exists($file));
$this->assertEquals(0, $mbox->size());
//remove the tmp file
unlink($file2);
}
/**
* Checks if a file has been modified
*/
public function testHasBeenModified() {
$this->copy();
$mbox = new Mail_Mbox(Mail_MboxTest::$filecopy);
$this->assertTrue($mbox->open());
$this->assertFalse($mbox->hasBeenModified());
//get a new timestamp for the change
sleep(1);
$mbox2 = new Mail_Mbox(Mail_MboxTest::$filecopy);
$this->assertTrue($mbox2->open());
$this->assertTrue($mbox2->remove(0));
$this->assertTrue($mbox2->close());
$this->assertTrue($mbox->hasBeenModified());
//This methods should not allow modifying a changed file.
$err = $mbox->remove(0);
$this->assertType('PEAR_Error', $err);
$this->assertEquals(MAIL_MBOX_ERROR_MODIFIED, $err->getCode());
$err = $mbox->insert('From Test');
$this->assertType('PEAR_Error', $err);
$this->assertEquals(MAIL_MBOX_ERROR_MODIFIED, $err->getCode());
$err = $mbox->update(0, 'From Test');
$this->assertType('PEAR_Error', $err);
$this->assertEquals(MAIL_MBOX_ERROR_MODIFIED, $err->getCode());
$this->assertTrue($mbox->close());
}
public function testSetTmpDir()
{
$this->assertEquals('/tmp', $this->mbox->tmpdir);
$this->assertTrue($this->mbox->setTmpDir('/this/is/a/tmp/dir'));
$this->assertEquals('/this/is/a/tmp/dir', $this->mbox->tmpdir);
$this->assertTrue($this->mbox->setTmpDir('/tmp'));
$this->assertEquals('/tmp', $this->mbox->tmpdir);
}
public function testGetTmpDir()
{
$this->assertEquals('/tmp', $this->mbox->tmpdir);
$this->assertEquals('/tmp', $this->mbox->getTmpDir());
$this->assertTrue($this->mbox->setTmpDir('/this/is/a/tmp/dir'));
$this->assertEquals('/this/is/a/tmp/dir', $this->mbox->tmpdir);
$this->assertEquals('/this/is/a/tmp/dir', $this->mbox->getTmpDir());
}
public function testSetDebug()
{
$this->assertFalse($this->mbox->debug);
$this->mbox->setDebug(true);
$this->assertTrue($this->mbox->debug);
$this->mbox->setDebug(false);
$this->assertFalse($this->mbox->debug);
}
public function testGetDebug()
{
$this->assertFalse($this->mbox->debug);
$this->assertFalse($this->mbox->getDebug());
$this->mbox->setDebug(true);
$this->assertTrue($this->mbox->debug);
$this->assertTrue($this->mbox->getDebug());
$this->mbox->setDebug(false);
$this->assertFalse($this->mbox->debug);
$this->assertFalse($this->mbox->getDebug());
}
/**
* Test message escaping
*
* @return void
*/
public function test_escapeMessage()
{
$this->assertEquals(
<<From now on, no more bugs!
>>From what I said...
>>>From where are you coming?
MBX
, $this->mbox->_escapeMessage(
<<From what I said...
>>From where are you coming?
MBX
)
);
}
/**
* Test message escaping with "From " midst of the text
*
* @return void
*/
public function test_escapeMessageFromMid()
{
$this->assertEquals(
<<From now on, no more bugs!
>>From what I said...
>>>From where are you coming?
>From From From From what?
MBX
, $this->mbox->_escapeMessage(
<<From what I said...
>>From where are you coming?
From From From From what?
MBX
)
);
}
/**
* Test message unescaping with ">From " midst of the text
*
* @return void
*/
public function test_unescapeMessageFromMid()
{
$this->assertEquals(
<<From what I said...
>>From where are you coming?
From >From >From >From what?
MBX
, $this->mbox->_unescapeMessage(
<<From now on, no more bugs!
>>From what I said...
>>>From where are you coming?
>From >From >From >From what?
MBX
)
);
}
/**
* Opening a non-existing mbox file does not succeed, and
* there was no way to create one.
* With bug #16487, open() accepts a $create parameter now.
*
* @link http://pear.php.net/bugs/bug.php?id=16487
*
* @return void
*/
public function testBug16487()
{
//file does not exist yet
$file = tempnam(sys_get_temp_dir(), 'mail_mbox');
unlink($file);
$mbox = new Mail_Mbox($file);
//open without parameter does not create anything
$err = $mbox->open();
$this->assertType('PEAR_Error', $err);
$this->assertEquals(
MAIL_MBOX_ERROR_FILE_NOT_EXISTING, $err->getCode()
);
//with true as first parameter the file gets created
$err = $mbox->open(true);
$this->assertTrue($err);
$mbox->insert('From someone who loves you');
$mbox->close();
$this->assertFileExists($file);
unlink($file);
}
/**
* While the bug was incorrect, it showed that we do not
* escape messages properly.
* Here we test that escaped messages are stored and read
* properly.
*
* @link http://pear.php.net/bugs/bug.php?id=16758
*
* @return void
*/
public function testBug16758()
{
$msg =<<From what I said...
>>From where are you coming?
MBX;
//file does not exist yet
$mbox = new Mail_Mbox(self::$filecopy);
$this->assertTrue($mbox->open());
$this->assertTrue($mbox->append($msg));
$mbox->close();
$mbox = new Mail_Mbox(self::$filecopy);
$this->assertTrue($mbox->open());
$this->assertEquals(1, $mbox->size());
$this->assertEquals($msg, $mbox->get(0));
}//public function testBug16758()
/**
* Helper method to copy $file to $filecopy
*/
protected function copy()
{
copy(Mail_MboxTest::$file, Mail_MboxTest::$filecopy);
}
}
// Call Mail_MboxTest::main() if this source file is executed directly.
if (PHPUnit_MAIN_METHOD == "Mail_MboxTest::main") {
Mail_MboxTest::main();
}
?>
Mail_Mbox-0.6.3/tests/testbox 100644 764 144 34530 100644 11213 From - Thu Jun 22 18:09:01 2006
X-Account-Key: account4
X-UIDL: UID20394-1133961700
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
X-Greylist: delayed 1778 seconds by postgrey-1.21 at d80-237-146-62.dds.hosteurope.de; Thu, 22 Jun 2006 18:07:43 CEST
Received: from fallback-mx1.atl.registeredsite.com (fallback-mx1.atl.registeredsite.com [64.224.219.95])
by mail.cweiske.de (Postfix) with ESMTP id 92DF53F8A003
for ; Thu, 22 Jun 2006 18:07:43 +0200 (CEST)
Received: from mail24.atl.registeredsite.com (mail24.atl.registeredsite.com [216.247.37.44])
by fallback-mx1.atl.registeredsite.com (8.12.11.20060308/8.12.11) with ESMTP id k5MFZecD006152
for ; Thu, 22 Jun 2006 11:35:40 -0400
Received: from imta01a2.registeredsite.com (imta01a2.registeredsite.com [64.225.255.10])
by mail24.atl.registeredsite.com (8.12.11.20060308/8.12.11) with ESMTP id k5MFZaUT012752
for ; Thu, 22 Jun 2006 11:35:36 -0400
Received: from [10.0.0.27] ([207.191.201.224])
by imta01a2.registeredsite.com with ESMTP
id <20060622153536.OUNZ4714.imta01a2.registeredsite.com@[10.0.0.27]>
for ; Thu, 22 Jun 2006 11:35:36 -0400
Message-ID: <449AB8C7.1000104@abcdefg-test.com>
Date: Thu, 22 Jun 2006 10:35:35 -0500
From: Jay Vavra
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060516 Thunderbird/1.5.0.4 Mnenhy/0.7.4.0
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
My own hands[TM]
From - Thu Jun 22 22:10:17 2006
X-Account-Key: account4
X-UIDL: UID20419-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
Received: from mail4.ewetel.de (mail4.ewetel.de [212.6.122.29])
by mail.cweiske.de (Postfix) with ESMTP id 9EB743F8A003
for ; Thu, 22 Jun 2006 22:02:25 +0200 (CEST)
Received: from [192.168.178.25] (dynadsl-080-228-67-242.ewetel.net [80.228.67.242])
by mail4.ewetel.de (8.12.1/8.12.9) with ESMTP id k5MK2OS2006524
for ; Thu, 22 Jun 2006 22:02:24 +0200 (MEST)
Message-ID: <449AF74D.3030803@gmx.de>
Date: Thu, 22 Jun 2006 22:02:21 +0200
From: Some Name
User-Agent: Thunderbird 1.5.0.4 (Windows/20060516)
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
X-CheckCompat: OK
neXus MIME Mail - PHP/5.1.1
From - Fri Jun 23 06:55:39 2006
X-Account-Key: account4
X-UIDL: UID20427-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
X-Greylist: delayed 720 seconds by postgrey-1.21 at d80-237-146-62.dds.hosteurope.de; Fri, 23 Jun 2006 00:32:12 CEST
Received: from mx18.yandex.ru (smtp2.yandex.ru [213.180.200.18])
by mail.cweiske.de (Postfix) with ESMTP id 0E7213F8A003
for ; Fri, 23 Jun 2006 00:32:12 +0200 (CEST)
Received: from ip16.174.adsl.wplus.ru ([195.131.174.16]:54797 "EHLO
[195.131.174.16]" smtp-auth: "pluton131" TLS-CIPHER:
TLS-PEER-CN1: ) by mail.yandex.ru with ESMTP id S3377100AbWFVWUF
(ORCPT ); Fri, 23 Jun 2006 02:20:05 +0400
X-Comment: RFC 2476 MSA function at smtp2.yandex.ru logged sender identity as: pluton131
Message-ID: <449B1794.20706@yandex.ru>
Date: Fri, 23 Jun 2006 02:20:04 +0400
From: Spari
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.4) Gecko/20060516 Mozilla Thunderbird/1.5 Mnenhy/0.7.4.0
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
X-Enigmail-Version: 0.94.0.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
SMF
From - Fri Jun 23 06:55:40 2006
X-Account-Key: account4
X-UIDL: UID20428-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
Received: from mx18.yandex.ru (smtp2.yandex.ru [213.180.200.18])
by mail.cweiske.de (Postfix) with ESMTP id 8647F3F8A003
for ; Fri, 23 Jun 2006 00:32:13 +0200 (CEST)
Received: from ip16.174.adsl.wplus.ru ([195.131.174.16]:55053 "EHLO
[195.131.174.16]" smtp-auth: "pluton131" TLS-CIPHER:
TLS-PEER-CN1: ) by mail.yandex.ru with ESMTP id S3377170AbWFVWUX
(ORCPT ); Fri, 23 Jun 2006 02:20:23 +0400
X-Comment: RFC 2476 MSA function at smtp2.yandex.ru logged sender identity as: pluton131
Message-ID: <449B17A6.3020608@yandex.ru>
Date: Fri, 23 Jun 2006 02:20:22 +0400
From: Spari
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.4) Gecko/20060516 Mozilla Thunderbird/1.5 Mnenhy/0.7.4.0
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
X-Enigmail-Version: 0.94.0.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
MailList Mailer
From - Fri Jun 23 06:55:41 2006
X-Account-Key: account4
X-UIDL: UID20431-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
Received: from hotmail.com (bay106-f1.bay106.hotmail.com [65.54.161.11])
by mail.cweiske.de (Postfix) with ESMTP id E94DD3F8A003
for ; Fri, 23 Jun 2006 01:50:37 +0200 (CEST)
Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC;
Thu, 22 Jun 2006 16:50:35 -0700
Message-ID:
Received: from 65.54.161.200 by by106fd.bay106.hotmail.msn.com with HTTP;
Thu, 22 Jun 2006 23:50:31 GMT
X-Originating-IP: [202.183.243.131]
X-Originating-Email: [upluto@hotmail.com]
X-Sender: upluto@hotmail.com
From: "Pluto ..."
To: cweiske@cweiske.de
Subject: dispMUA: new header
Date: Fri, 23 Jun 2006 06:50:31 +0700
Mime-Version: 1.0
Content-Type: text/plain; format=flowed
X-OriginalArrivalTime: 22 Jun 2006 23:50:35.0643 (UTC) FILETIME=[A7FDF4B0:01C69656]
CME-V6.5.4.3; MSN
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
From - Fri Jun 23 13:07:07 2006
X-Account-Key: account4
X-UIDL: UID20442-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
Received: from max000.maxhosting.de (max000.maxhosting.de [212.91.248.70])
by mail.cweiske.de (Postfix) with ESMTP id 42C223F8A003
for ; Fri, 23 Jun 2006 07:17:35 +0200 (CEST)
Received: from [85.176.217.240] (helo=[192.168.2.120])
by max000.maxhosting.de with asmtp (Exim premium (Debian))
id 1Fte1j-0002Eh-00
for ; Fri, 23 Jun 2006 07:16:19 +0200
Message-ID: <449B796A.3040807@toobusy.de>
Date: Fri, 23 Jun 2006 07:17:30 +0200
From: Mirko Keilwerth
User-Agent: Thunderbird 1.5.0.4 (Windows/20060516)
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
mainpean html2mail
From - Fri Jun 23 13:07:16 2006
X-Account-Key: account4
X-UIDL: UID20458-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
Received: from s4859.smaitec.de (s48593.smaitec.de [212.112.231.136])
by mail.cweiske.de (Postfix) with ESMTP id D33C83F8A004
for ; Fri, 23 Jun 2006 09:11:42 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
by s4859.smaitec.de (Postfix) with ESMTP id C1C06468021
for ; Fri, 23 Jun 2006 09:11:12 +0200 (CEST)
Received: from s4859.smaitec.de ([127.0.0.1])
by localhost (s4859.smaitec.de [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id 05015-06 for ;
Fri, 23 Jun 2006 09:11:12 +0200 (CEST)
Received: from [192.168.178.24] (p548EBFA9.dip0.t-ipconnect.de [84.142.191.169])
by s4859.smaitec.de (Postfix) with ESMTP id 73E72468020
for ; Fri, 23 Jun 2006 09:11:12 +0200 (CEST)
Message-ID: <449B9422.6060200@identity-compass.com>
Date: Fri, 23 Jun 2006 09:11:30 +0200
From: "Hello You"
User-Agent: Thunderbird 1.5.0.4 (Windows/20060516)
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at s4859.smaitec.de
fPost 4.1 (C) 2004 SalesEmotion GmbH
From - Fri Jun 23 13:07:17 2006
X-Account-Key: account4
X-UIDL: UID20460-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
X-Greylist: delayed 17391 seconds by postgrey-1.21 at d80-237-146-62.dds.hosteurope.de; Fri, 23 Jun 2006 09:30:11 CEST
Received: from mx-fall.zoominternet.net (mx-fall.zoominternet.net [24.154.1.28])
by mail.cweiske.de (Postfix) with ESMTP id 920583F8A004
for ; Fri, 23 Jun 2006 09:30:11 +0200 (CEST)
Received: from mx-8.zoominternet.net ([10.16.16.27])
by mx-fall.zoominternet.net (8.12.11/8.12.11) with ESMTP id k5N2eKEi025255
for ; Thu, 22 Jun 2006 22:40:21 -0400
Received: from mua-4.zoominternet.net (mua-4.zoominternet.net [24.154.1.47])
by mx-8.zoominternet.net (8.13.1/8.13.1) with ESMTP id k5N2e8BU030513
for ; Thu, 22 Jun 2006 22:40:12 -0400
Received: from [127.0.0.1] (unknown [24.239.116.162])
by mua-4.zoominternet.net (Postfix) with ESMTP id 4D6187F403
for ; Thu, 22 Jun 2006 22:40:12 -0400 (EDT)
Message-ID: <449B5496.5010505@zoominternet.net>
Date: Thu, 22 Jun 2006 22:40:22 -0400
From: Christopher Kindergarten
User-Agent: Thunderbird 1.5.0.4 (Windows/20060516)
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Antivirus: avast! (VPS 0625-6, 06/22/2006), Outbound message
X-Antivirus-Status: Clean
X-Spam-Score: 0.00 () [Tag at 15.00]
X-CanItPRO-Stream: outgoing
X-Scanned-By: CanIt (www . roaringpenguin . com) on 24.154.1.27
CME-V6.5.4.3; MSN
From - Fri Jun 23 13:07:20 2006
X-Account-Key: account4
X-UIDL: UID20466-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
X-Greylist: delayed 721 seconds by postgrey-1.21 at d80-237-146-62.dds.hosteurope.de; Fri, 23 Jun 2006 10:47:29 CEST
Received: from greco2.grecotel.gr (greco2.grecotel.gr [213.249.61.40])
by mail.cweiske.de (Postfix) with ESMTP id 27A3B3F8A003
for ; Fri, 23 Jun 2006 10:47:29 +0200 (CEST)
Received: from [10.8.1.99] ([10.8.1.99]) by greco2.grecotel.gr with Microsoft SMTPSVC(5.0.2195.6713);
Fri, 23 Jun 2006 11:38:59 +0300
Message-ID: <449BA7DD.6090506@panafonet.gr>
Date: Fri, 23 Jun 2006 11:35:41 +0300
From: Mama Papa
User-Agent: Thunderbird 1.5.0.4 (Windows/20060516)
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
X-Enigmail-Version: 0.94.0.0
Content-Type: text/plain; charset=ISO-8859-7
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 23 Jun 2006 08:38:59.0698 (UTC) FILETIME=[7914D520:01C696A0]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
MSCRM Version 1.0
- --
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (MingW32)
iD8DBQFEm6fdpu0NeBnSiRkRAndqAJ9E3eSBBSO+Upov8FgAla55O6wo5gCfRnbG
MgfiX593mPBVC7gedPoXOSc=
=sKvo
-----END PGP SIGNATURE-----
From - Fri Jun 23 13:07:21 2006
X-Account-Key: account4
X-UIDL: UID20468-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
X-Greylist: delayed 1417 seconds by postgrey-1.21 at d80-237-146-62.dds.hosteurope.de; Fri, 23 Jun 2006 11:33:24 CEST
Received: from mgate25.so-net.ne.jp (mgate25.so-net.ne.jp [202.238.84.125])
by mail.cweiske.de (Postfix) with ESMTP id 55CAC3F8A003
for ; Fri, 23 Jun 2006 11:33:23 +0200 (CEST)
Received: from mx51.ms.so-net.ne.jp (mx51.ms.so-net.ne.jp [202.238.83.1])
by mgate25.so-net.ne.jp with ESMTP id k5N99XfD007824
for ; Fri, 23 Jun 2006 18:09:33 +0900 (JST)
Received: from [127.0.0.1] (p6e57cf.sigant01.ap.so-net.ne.jp [218.110.87.207])
by mx51.ms.so-net.ne.jp with ESMTP id k5N993dV010879
for ; Fri, 23 Jun 2006 18:09:15 +0900 (JST)
Message-ID: <449BAFB1.1010707@cf7.so-net.ne.jp>
Date: Fri, 23 Jun 2006 18:09:05 +0900
From: Daigo
Reply-To: dais@sonett.jp
User-Agent: Thunderbird 1.5.0.4 (Windows/20060516)
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
http://www.postblitz.net
From - Fri Jun 23 15:00:31 2006
X-Account-Key: account4
X-UIDL: UID20488-1133961700
X-Mozilla-Status: 0000
X-Mozilla-Status2: 00000000
Return-Path:
X-Original-To: cweiske@cweiske.de
Delivered-To: cweiske@cweiske.de
X-Greylist: delayed 1163 seconds by postgrey-1.21 at d80-237-146-62.dds.hosteurope.de; Fri, 23 Jun 2006 14:55:54 CEST
Received: from natreg.rzone.de (natreg.rzone.de [81.169.145.183])
by mail.cweiske.de (Postfix) with ESMTP id 7CC253F8A003
for ; Fri, 23 Jun 2006 14:55:53 +0200 (CEST)
Received: from [192.168.0.26] (p5498564A.dip.t-dialin.net [84.152.86.74])
(authenticated bits=0)
by post.webmailer.de (8.13.6/8.13.6) with ESMTP id k5NCaS4g019393
for ; Fri, 23 Jun 2006 14:36:29 +0200 (MEST)
Message-ID: <449BE050.8010302@somehost.de>
Date: Fri, 23 Jun 2006 14:36:32 +0200
From: Oliver Olli
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.4) Gecko/20060516 Thunderbird/1.5.0.4 Mnenhy/0.7.4.0
MIME-Version: 1.0
To: cweiske@cweiske.de
Subject: dispMUA: new header
X-Enigmail-Version: 0.94.0.0
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit
BueroWARE MailClient 1.0.241
(aus Angebotstool Fa. gotomaxx.de)