<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.pmail.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Peter Strömblad</title><subtitle type="html">Peter lives in Sweden and is an independent contractor with hosting services.</subtitle><id>http://community.pmail.com/blogs/pis/atom.aspx</id><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/default.aspx" /><link rel="self" type="application/atom+xml" href="http://community.pmail.com/blogs/pis/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.61129.2">Community Server</generator><updated>2007-02-16T00:11:00Z</updated><entry><title>Live every day - as it's an important day!</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2008/10/07/live-every-day-as-it-s-an-important-day.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2008/10/07/live-every-day-as-it-s-an-important-day.aspx</id><published>2008-10-07T11:04:00Z</published><updated>2008-10-07T11:04:00Z</updated><content type="html">&lt;P&gt;Early this morning I got&amp;nbsp;the message that&amp;nbsp;a very close friend&amp;nbsp;got&amp;nbsp;hit by a car on her bike road to work yesterday morning. She sustained such severe trauma to the head that she died. She leaves husband and small&amp;nbsp;children.&amp;nbsp;The driver was temporary blinded by the rising sun,&amp;nbsp;driving his two kids to pre-school.&lt;/P&gt;
&lt;P&gt;Life is fragile, but we tend to think we are all immortal until something really painful comes too close.&amp;nbsp;This accident came too close, and my thoughts wander astray to the driver, his wife and family, their innocent children, and Margaretha - her family, father, mother, brother and of course husband Jonas and their innocent children. &lt;/P&gt;
&lt;P&gt;So - be friendly and nice to your next and do the things you love to do - because life is fragile.&lt;/P&gt;
&lt;P&gt;/Peter&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sydsvenskan.se/lund/article375811/Cyklist-ihjalkord-i-Lund.html"&gt;http://sydsvenskan.se/lund/article375811/Cyklist-ihjalkord-i-Lund.html&lt;/A&gt;&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=12405" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>Repetitive work in SQL</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2008/09/04/repetitive-work-in-sql.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2008/09/04/repetitive-work-in-sql.aspx</id><published>2008-09-04T18:14:00Z</published><updated>2008-09-04T18:14:00Z</updated><content type="html">&lt;P&gt;Just wanted to share the two SQL scripts I produced last week. They are stored procedures that create standard looking CreateUpdate and Get procedures for any given table in SQL-Server. I've published the scripts at sqlservercentral.com and they are free to use and tweak.&lt;/P&gt;
&lt;P&gt;Stored procedure &lt;A class="" href="http://www.sqlservercentral.com/scripts/T-SQL+Stored+Procedure/64259/" target=_blank&gt;mkProc_CreateUpdate&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Stored procedure &lt;A class="" href="http://www.sqlservercentral.com/scripts/T-SQL+Stored+Procedure/64258/" target=_blank&gt;mkProc_Get&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Here is a brief description for both of the procedures&lt;/P&gt;
&lt;DIV class=note&gt;
&lt;P&gt;mkProc_CreateUpdate v1.0 (c) Petena AB 1993-2008, &lt;A href="http://www.petena.se/"&gt;http://www.petena.se/&lt;/A&gt;, &lt;A href="http://www.praktit.se/"&gt;http://www.praktit.se/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Creates stored procedure of given table name for the purpose of adding or updating a record&lt;BR&gt;    Primary keys are to be set to null to trigger the insert, and the key is returned.&lt;BR&gt;    Signals null/not null and default values.&lt;/P&gt;
&lt;P&gt;    Input Params:&lt;BR&gt;        @_tableName - the table you want to script&lt;BR&gt;        @prefix - add string here if you want your stored procedure name prefixed, like 'sp_'&lt;BR&gt;        @AddParams - add additional parameters to the stored procedure call&lt;BR&gt;        @DoCreate - true/false : when true the stored procedure is created&lt;BR&gt;        @Debug - true/false : true only works when @DoCreate is false, presents all internal tables&lt;BR&gt;    &lt;BR&gt;    Example: Exec mkProc_CreateUpdate 'Orders', 'crm_', &lt;A href="mailto:'@userID"&gt;'@userID&lt;/A&gt; int,' false, true&lt;BR&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=11322" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>C# Null, DBNull and Entities</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2008/08/25/c-null-dbnull-and-entities.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2008/08/25/c-null-dbnull-and-entities.aspx</id><published>2008-08-25T08:59:00Z</published><updated>2008-08-25T08:59:00Z</updated><content type="html">&lt;P&gt;I've been working like mad to get my 3-tier construction to work. As I'm not all that great in C# yet, I delightedly discovered that C# supports nullable types. Now finally I can match my database constructions with a proper entity in code, and as well build the business layer so that it deals with the values as it should.&lt;/P&gt;
&lt;P&gt;Some of you know that a relational database is perfect when it comes to relating a drop down with a key value, then fetching the meaning of the key value from the related table. But if the drop down hasn't been selected, you should not store&amp;nbsp;an arbitrary value - you store NULL = unknown.&lt;/P&gt;
&lt;P&gt;Now I came across a tool with source from Rick Strahls weblog, called DataRowGenerator. I've managed to alter this so that it now suits my needs by creating one entity file for each datatable. Below is a sample of the code that the program now generates automatically for all my 54 tables.&lt;/P&gt;
&lt;P&gt;Here are some reference links that you may find useful.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/thottams/archive/2008/06/30/dbnull-and-nullable-types.aspx"&gt;http://blogs.msdn.com/thottams/archive/2008/06/30/dbnull-and-nullable-types.aspx&lt;/A&gt;&lt;BR&gt;&lt;A href="http://sab39.netreach.com/Blog/Blog/12/vobId__172/pm__18/"&gt;http://sab39.netreach.com/Blog/Blog/12/vobId__172/pm__18/&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.codeproject.com/KB/architecture/three_tier_architecture.aspx"&gt;http://www.codeproject.com/KB/architecture/three_tier_architecture.aspx&lt;/A&gt;&lt;BR&gt;&lt;A href="http://west-wind.com/weblog/posts/147.aspx"&gt;http://west-wind.com/weblog/posts/147.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=coloredcode&gt;&lt;SPAN class=cmt&gt;/* ArtikelGrp.cs (c) Petena AB 1994-2008, http://www.petena.se, http://www.praktit.se


DEVELOPMENT HISTORY: ******************************************************************************
v0.01
  20080825 PiS -&amp;gt; Start

BUGS &amp;amp; NOTES: *********** ( !=Warning, +=Additions to be made, -=Comment ) ************************
  - 
 */&lt;/SPAN&gt;

&lt;SPAN class=kwd&gt;using&lt;/SPAN&gt; System;
&lt;SPAN class=kwd&gt;using&lt;/SPAN&gt; System.Collections;
&lt;SPAN class=kwd&gt;using&lt;/SPAN&gt; System.Collections.Generic;
&lt;SPAN class=kwd&gt;using&lt;/SPAN&gt; System.Data;
&lt;SPAN class=kwd&gt;using&lt;/SPAN&gt; System.Data.SqlClient;

&lt;SPAN class=kwd&gt;namespace&lt;/SPAN&gt; PraktIT.CRM.Data {

	[Serializable]
	&lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; partial &lt;SPAN class=kwd&gt;class&lt;/SPAN&gt; ArtikelGrp {
				
    &lt;SPAN class=kwd&gt;#region&lt;/SPAN&gt;&lt;SPAN class=kwdt&gt; Private Members&lt;/SPAN&gt;
		  &lt;SPAN class=kwd&gt;private&lt;/SPAN&gt; Int32? _ID = &lt;SPAN class=kwd&gt;null&lt;/SPAN&gt;;   &lt;SPAN class=cmt&gt;//  &lt;/SPAN&gt;
		  &lt;SPAN class=kwd&gt;private&lt;/SPAN&gt; Guid? _UID = &lt;SPAN class=kwd&gt;null&lt;/SPAN&gt;;   &lt;SPAN class=cmt&gt;//  &lt;/SPAN&gt;
		  &lt;SPAN class=kwd&gt;private&lt;/SPAN&gt; Int32? _ArtikelGrp_ID_Parent = &lt;SPAN class=kwd&gt;null&lt;/SPAN&gt;;   &lt;SPAN class=cmt&gt;//  &lt;/SPAN&gt;
		  &lt;SPAN class=kwd&gt;private&lt;/SPAN&gt; Int32? _Nr = &lt;SPAN class=kwd&gt;null&lt;/SPAN&gt;;   &lt;SPAN class=cmt&gt;//  &lt;/SPAN&gt;
		  &lt;SPAN class=kwd&gt;private&lt;/SPAN&gt; String _Kod = &lt;SPAN class=kwd&gt;null&lt;/SPAN&gt;;   &lt;SPAN class=cmt&gt;//  &lt;/SPAN&gt;
		  &lt;SPAN class=kwd&gt;private&lt;/SPAN&gt; String _Namn = &lt;SPAN class=kwd&gt;null&lt;/SPAN&gt;;   &lt;SPAN class=cmt&gt;//  &lt;/SPAN&gt;
		  &lt;SPAN class=kwd&gt;private&lt;/SPAN&gt; String _Titel = &lt;SPAN class=kwd&gt;null&lt;/SPAN&gt;;   &lt;SPAN class=cmt&gt;//  &lt;/SPAN&gt;
		  &lt;SPAN class=kwd&gt;private&lt;/SPAN&gt; Boolean? _Aktiv = &lt;SPAN class=kwd&gt;null&lt;/SPAN&gt;;   &lt;SPAN class=cmt&gt;//  &lt;/SPAN&gt;
		  &lt;SPAN class=kwd&gt;private&lt;/SPAN&gt; Guid? _Firma_UID_Owner = &lt;SPAN class=kwd&gt;null&lt;/SPAN&gt;;   &lt;SPAN class=cmt&gt;//  &lt;/SPAN&gt;

    &lt;SPAN class=kwd&gt;#endregion

    #region&lt;/SPAN&gt;&lt;SPAN class=kwdt&gt; Public Properties&lt;/SPAN&gt;
        &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; Int32? ID
        {   &lt;SPAN class=kwd&gt;get&lt;/SPAN&gt; { &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _ID; }
            &lt;SPAN class=kwd&gt;set&lt;/SPAN&gt; { _ID = &lt;SPAN class=kwd&gt;value&lt;/SPAN&gt;; }  }

        &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; Guid? UID
        {   &lt;SPAN class=kwd&gt;get&lt;/SPAN&gt; { &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _UID; }
            &lt;SPAN class=kwd&gt;set&lt;/SPAN&gt; { _UID = &lt;SPAN class=kwd&gt;value&lt;/SPAN&gt;; }  }

        &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; Int32? ArtikelGrp_ID_Parent
        {   &lt;SPAN class=kwd&gt;get&lt;/SPAN&gt; { &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _ArtikelGrp_ID_Parent; }
            &lt;SPAN class=kwd&gt;set&lt;/SPAN&gt; { _ArtikelGrp_ID_Parent = &lt;SPAN class=kwd&gt;value&lt;/SPAN&gt;; }   }

        &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; Int32? Nr
        {   &lt;SPAN class=kwd&gt;get&lt;/SPAN&gt; { &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _Nr; }
            &lt;SPAN class=kwd&gt;set&lt;/SPAN&gt; { _Nr = &lt;SPAN class=kwd&gt;value&lt;/SPAN&gt;; }  }

        &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; String Kod
        {   &lt;SPAN class=kwd&gt;get&lt;/SPAN&gt; { &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _Kod; }
            &lt;SPAN class=kwd&gt;set&lt;/SPAN&gt; { _Kod = &lt;SPAN class=kwd&gt;value&lt;/SPAN&gt;; }  }

        &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; String Namn
        {   &lt;SPAN class=kwd&gt;get&lt;/SPAN&gt; { &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _Namn; }
            &lt;SPAN class=kwd&gt;set&lt;/SPAN&gt; { _Namn = &lt;SPAN class=kwd&gt;value&lt;/SPAN&gt;; }    }

        &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; String Titel
        {   &lt;SPAN class=kwd&gt;get&lt;/SPAN&gt; { &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _Titel; }
            &lt;SPAN class=kwd&gt;set&lt;/SPAN&gt; { _Titel = &lt;SPAN class=kwd&gt;value&lt;/SPAN&gt;; }   }

        &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; Boolean? Aktiv
        {   &lt;SPAN class=kwd&gt;get&lt;/SPAN&gt; { &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _Aktiv; }
            &lt;SPAN class=kwd&gt;set&lt;/SPAN&gt; { _Aktiv = &lt;SPAN class=kwd&gt;value&lt;/SPAN&gt;; }  }

        &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; Guid? Firma_UID_Owner
        {   &lt;SPAN class=kwd&gt;get&lt;/SPAN&gt; { &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _Firma_UID_Owner; }
            &lt;SPAN class=kwd&gt;set&lt;/SPAN&gt; { _Firma_UID_Owner = &lt;SPAN class=kwd&gt;value&lt;/SPAN&gt;; }  }


    &lt;SPAN class=kwd&gt;#endregion

    #region&lt;/SPAN&gt;&lt;SPAN class=kwdt&gt; Populate&lt;/SPAN&gt;
      &lt;SPAN class=kwd&gt;public static&lt;/SPAN&gt; ArtikelGrp Populate(IDataReader dr) 
      {
        ArtikelGrp _ArtikelGrp = &lt;SPAN class=kwd&gt;new&lt;/SPAN&gt; ArtikelGrp();
        Populate(dr, &lt;SPAN class=kwd&gt;ref&lt;/SPAN&gt; _ArtikelGrp);
        &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _ArtikelGrp;
      }

      &lt;SPAN class=kwd&gt;public static void&lt;/SPAN&gt; Populate(IDataReader dr, &lt;SPAN class=kwd&gt;ref&lt;/SPAN&gt; ArtikelGrp _ArtikelGrp)
      {
        _ArtikelGrp.ID = dr[&lt;SPAN class=st&gt;"ID"&lt;/SPAN&gt;] &lt;SPAN class=kwd&gt;as&lt;/SPAN&gt; Int32?;
        _ArtikelGrp.UID = dr[&lt;SPAN class=st&gt;"UID"&lt;/SPAN&gt;] &lt;SPAN class=kwd&gt;as&lt;/SPAN&gt; Guid?;
        _ArtikelGrp.ArtikelGrp_ID_Parent = dr[&lt;SPAN class=st&gt;"ArtikelGrp_ID_Parent"&lt;/SPAN&gt;] &lt;SPAN class=kwd&gt;as&lt;/SPAN&gt; Int32?;
        _ArtikelGrp.Nr = dr[&lt;SPAN class=st&gt;"Nr"&lt;/SPAN&gt;] &lt;SPAN class=kwd&gt;as&lt;/SPAN&gt; Int32?;
        _ArtikelGrp.Kod = dr[&lt;SPAN class=st&gt;"Kod"&lt;/SPAN&gt;] &lt;SPAN class=kwd&gt;as&lt;/SPAN&gt; String;
        _ArtikelGrp.Namn = dr[&lt;SPAN class=st&gt;"Namn"&lt;/SPAN&gt;] &lt;SPAN class=kwd&gt;as&lt;/SPAN&gt; String;
        _ArtikelGrp.Titel = dr[&lt;SPAN class=st&gt;"Titel"&lt;/SPAN&gt;] &lt;SPAN class=kwd&gt;as&lt;/SPAN&gt; String;
        _ArtikelGrp.Aktiv = dr[&lt;SPAN class=st&gt;"Aktiv"&lt;/SPAN&gt;] &lt;SPAN class=kwd&gt;as&lt;/SPAN&gt; Boolean?;
        _ArtikelGrp.Firma_UID_Owner = dr[&lt;SPAN class=st&gt;"Firma_UID_Owner"&lt;/SPAN&gt;] &lt;SPAN class=kwd&gt;as&lt;/SPAN&gt; Guid?;
        }
    &lt;SPAN class=kwd&gt;#endregion&lt;/SPAN&gt;

	}

	&lt;SPAN class=kwd&gt;public class&lt;/SPAN&gt; ArtikelGrpDataProvider : DataProvider {

  &lt;SPAN class=kwd&gt;#region&lt;/SPAN&gt;&lt;SPAN class=kwdt&gt; Get using Select&lt;/SPAN&gt;
    &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; ArtikelGrp GetArtikelGrp(Int32 ArtikelGrp_ID)
    {
      SqlConnection conn = &lt;SPAN class=kwd&gt;new&lt;/SPAN&gt; SqlConnection(ConnectionString);
      &lt;SPAN class=kwd&gt;string&lt;/SPAN&gt; _SqlCmdTxt = &lt;SPAN class=st&gt;"Select * FROM ArtikelGrp WHERE ID = @pk"&lt;/SPAN&gt;;
      SqlCommand cmd = &lt;SPAN class=kwd&gt;new&lt;/SPAN&gt; SqlCommand(_SqlCmdTxt, conn);
      cmd.Parameters.AddWithValue(&lt;SPAN class=st&gt;"@pk"&lt;/SPAN&gt;, ArtikelGrp_ID);
      conn.Open();
      SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
      &lt;SPAN class=kwd&gt;if&lt;/SPAN&gt; (!dr.Read())
      {
        dr.Close();
        conn.Close();
        &lt;SPAN class=kwd&gt;throw new&lt;/SPAN&gt; Exception(&lt;SPAN class=st&gt;"ArtikelGrp not found!\r\nID = "&lt;/SPAN&gt; + ArtikelGrp_ID);
      }
      &lt;SPAN class=kwd&gt;else&lt;/SPAN&gt;
      {
        ArtikelGrp _ArtikelGrp = ArtikelGrp.Populate(dr);
        dr.Close();
        conn.Close();
        &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _ArtikelGrp;
      }
    }
  &lt;SPAN class=kwd&gt;#endregion

  #region&lt;/SPAN&gt;&lt;SPAN class=kwdt&gt; Get using Stored Procedure&lt;/SPAN&gt;
    &lt;SPAN class=kwd&gt;public&lt;/SPAN&gt; ArtikelGrp GetArtikelGrp(Int32 ArtikelGrp_ID, Guid Person_UID)
    {
      SqlConnection conn = &lt;SPAN class=kwd&gt;new&lt;/SPAN&gt; SqlConnection(ConnectionString);
      SqlCommand cmd = &lt;SPAN class=kwd&gt;new&lt;/SPAN&gt; SqlCommand(&lt;SPAN class=st&gt;"sp_ArtikelGrp_Get"&lt;/SPAN&gt;, conn);
      cmd.CommandType = CommandType.StoredProcedure;
      cmd.Parameters.AddWithValue(&lt;SPAN class=st&gt;"@ID"&lt;/SPAN&gt;, ArtikelGrp_ID);
      cmd.Parameters.AddWithValue(&lt;SPAN class=st&gt;"@Person_UID"&lt;/SPAN&gt;, Person_UID);
      conn.Open();
      SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
      &lt;SPAN class=kwd&gt;if&lt;/SPAN&gt; (!dr.Read())
      {
        dr.Close();
        conn.Close();
        &lt;SPAN class=kwd&gt;throw new&lt;/SPAN&gt; Exception(&lt;SPAN class=st&gt;"ArtikelGrp not found!\r\nID = "&lt;/SPAN&gt; + ArtikelGrp_ID + &lt;SPAN class=st&gt;"\r\nPerson_UID = "&lt;/SPAN&gt; + Person_UID);
      }
      &lt;SPAN class=kwd&gt;else&lt;/SPAN&gt;
      {
        ArtikelGrp _ArtikelGrp = ArtikelGrp.Populate(dr);
        dr.Close();
        conn.Close();
        &lt;SPAN class=kwd&gt;return&lt;/SPAN&gt; _ArtikelGrp;
      }
    }
  &lt;SPAN class=kwd&gt;#endregion&lt;/SPAN&gt;
	}

}
&lt;/PRE&gt;&amp;nbsp;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=11027" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>Codename: Madmin</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2008/08/19/codename-madmin.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2008/08/19/codename-madmin.aspx</id><published>2008-08-19T13:48:00Z</published><updated>2008-08-19T13:48:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;The time has come to start a long awaited project!&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;&lt;STRONG&gt;Madmin is my codename&lt;/STRONG&gt;, until someone has a better name for it. &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;FONT size="4"&gt;Madmin is short of Mailserver Administrator.&lt;/FONT&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;All the way back from 2000 we've administered our Mercury installations through a web interface, with a SQL-database and a separate program called MercurySynch.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;&lt;STRONG&gt;Madmin's objective is to replace MercurySynch.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;As such, it will be:&lt;BR&gt; 1. a webservice&lt;BR&gt;2. utilizing IIS&lt;BR&gt;3. directly manipulate one or more Mercury/32 Mailservers.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;Our old MercurySynch polls the database at 20 minute intervals, but a webservice with direct access will do its work directly when called upon.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;A webservice has the benefit that it is a stand alone application, and can just as Rolfs HTTPServer start, stop, pause, reload any instance via Windows Messaging. Designing a webservice also has the benefit that it is fairly easy to create administrational modules for that can be integrated into larger packages, or created as a stand-alone Mail Administrator web-site.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;&lt;STRONG&gt;How do we begin?&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;Well, the only way to start is to iron out the relational data model. I have a few requisites:&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="georgia,palatino"&gt;1. Multiple Mercury installations has to be supported&lt;BR&gt;2. Multiple domains&lt;BR&gt;3. Local users, tied to organizational entity&lt;BR&gt;4. Domains, tied to organizational entity&lt;BR&gt;5. Alias handling&lt;BR&gt;6. Relay&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="georgia,palatino"&gt;7. Autoresponders&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;&lt;STRONG&gt;Anything missed?&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;If you feel you want to be part of this, or if you have expectations or valuable input - now is the time to put that forth in the notes to this post.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;&lt;STRONG&gt;Tool and reporting.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="georgia,palatino"&gt;As I go along, I'll post my thoughts here - and I'll also update this space regularly as I make progress. When there is something to test I'll share it in the downloads section here at the community. I know we will later get into design issues, as well as PDA support for a proper and sleek Mail Server Administration web site. The tool I use is Visual Studio 2008 and the language will be C#.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=10879" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author><category term="Madmin" scheme="http://community.pmail.com/blogs/pis/archive/tags/Madmin/default.aspx" /><category term="Mercury/32" scheme="http://community.pmail.com/blogs/pis/archive/tags/Mercury_2F00_32/default.aspx" /><category term="Webadmin" scheme="http://community.pmail.com/blogs/pis/archive/tags/Webadmin/default.aspx" /><category term="Web Administration" scheme="http://community.pmail.com/blogs/pis/archive/tags/Web+Administration/default.aspx" /><category term="Mercury Mailserve" scheme="http://community.pmail.com/blogs/pis/archive/tags/Mercury+Mailserve/default.aspx" /></entry><entry><title>You know Windows Update is flawed - don't you?</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2008/08/17/you-know-windows-update-is-flawed-don-t-you.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2008/08/17/you-know-windows-update-is-flawed-don-t-you.aspx</id><published>2008-08-17T08:13:00Z</published><updated>2008-08-17T08:13:00Z</updated><content type="html">&lt;P&gt;Automatic updates of software are good - aren't they? Well I'd answer yes in normal cases, but anything that is automatic can behave in ways the creators never imagined. So it is with fire alarms, burglar alarms, and of course with computing. This patch tuesday from Microsoft contains quite a number of fixes. Some that are very important to servers, regarding name resolution. However smart we are, automatic&amp;nbsp;updates are not enabled on our servers - we consider them too dangerous - since in the past some driver updates have caused machines never to start again.&lt;/P&gt;
&lt;P&gt;And so it happens - again. And now, with virtual servers running on top of the base server - when updates fail, you render three-four five or even eight machines stranded. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What happened then, why doesn't the server start as it should?&lt;/STRONG&gt; - well it does, but just barely. I've never seen windows so inoperable that not even a task monitor is accessible, not even in safe mode. A small clue exists on sys\windows in the file WindowsUpdate.log - that is accessible over the network. It states&lt;/P&gt;
&lt;P&gt;2008-08-17&amp;nbsp;10:19:44:472&amp;nbsp;4328&amp;nbsp;1594&amp;nbsp;AUClnt&amp;nbsp;WARNING: Shell_NotifyIcon failed (dwMessage=0x0, uFlags=0x3, hr=0x80070002)&lt;BR&gt;2008-08-17&amp;nbsp;10:19:44:472&amp;nbsp;4328&amp;nbsp;1594&amp;nbsp;CltUI&amp;nbsp;FATAL: Failed to show client UI, directive=5, hr=80070002&lt;/P&gt;
&lt;P&gt;Aha, something in the windows shell isn't starting as it should. And with the debate of removing Media Player from windows, since explorer is so tightly integrated, led me to investigate - what changes were made to explorer this time. Within KB953838-IE7.log I found it. It says: &lt;/P&gt;
&lt;P&gt;6.937: DoInstallation:AnalyzeDiskUsage failed&lt;/P&gt;
&lt;P&gt;Aha - so the sys volume ran out of disk space during the install - and let's not bother with the why or how at the moment. The reason I state that Windows Update is flawed, is that it requires a re-boot for some operations. This Patch Tuesday's pack of files required a re-start, and between the update and the restart, that continues the installation - disk space ran out. Sure, yes it probably did - but when updating really cruical files, shouldn't this be checked before? In fact it does, but the limit of free space is too tight - and there you have the result - a server heavily depended upon - needs to be re-installed.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Well, then, why wasn't 16 GB of system space enough?&lt;/STRONG&gt; Because of all darned copies that Windows generates. In the Windows directory there are hidden KB directories. Besides these you have another directory called ServicePackFiles and another directory with files. Only the Windows directory contains more than&amp;nbsp;8 GB of files today, on a server that was installed december 2006. That is insane. To the downfall, we support many systems, older than some of my boys. When they we're installed with RAID controllers and high speed SCSI drives disk space was quite expensive and a total 32GB server system was considered more than enough. Some of the directories are safe to delete, some are not - and I haven't found any official information from Microsoft on how to conserve system volume space. If anyone has, please let me know.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;So for the time being, take this advice if you run cruical machines: &lt;BR&gt;Make sure you have plenty of free space on you system volume before running Windows Update aka Microsoft Update.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;....&lt;/P&gt;
&lt;P&gt;and now on to the task of backing up all drives (just about a terabyte of data.... - sigh)&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=10834" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>arrrrgh web apps</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2008/08/12/arrrrgh-web-apps.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2008/08/12/arrrrgh-web-apps.aspx</id><published>2008-08-12T21:29:00Z</published><updated>2008-08-12T21:29:00Z</updated><content type="html">&lt;P&gt;Writing apps for the webb is a challenging task. What takes a normal hour when creating "normal" apps takes four times when working a three tier webb-app. There are simply so many pits you can fall in.&lt;/P&gt;
&lt;P&gt;In any case I thought I'd share some very interesting read-up.&lt;/P&gt;
&lt;P&gt;First of all, creating forms: Read up on Rick Strahl's excellent piece at msdn: &lt;A href="http://msdn.microsoft.com/sv-se/magazine/cc163505(en-us).aspx"&gt;http://msdn.microsoft.com/sv-se/magazine/cc163505(en-us).aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Then dwelve down into his weblog and you'll find an absolute excellent tool on how to create the windows classes directly from your database: &lt;A href="http://www.west-wind.com/WebLog/posts/147.aspx"&gt;http://www.west-wind.com/WebLog/posts/147.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;So, after that we're on to Ajax. The resource for that is naturally &lt;A href="http://asp.net/"&gt;http://asp.net&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;There's a lot more. One needs to familiarize one self with css (zen-garden is excellent), sql calls, stored procedures, java-script, cookies, performance issues and not to forget loose binding. A web-app is always in a "new" state - there is very little you can do to compensate for the round-trips to the server side.&lt;/P&gt;
&lt;P&gt;In the future I hope to share code when I get to hacking a Mercury web-service.&lt;/P&gt;
&lt;P&gt;cheers for now / Peter&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=10741" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>Time off</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2008/04/06/time-off.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2008/04/06/time-off.aspx</id><published>2008-04-06T07:57:00Z</published><updated>2008-04-06T07:57:00Z</updated><content type="html">&lt;P&gt;Imagine doing whatever you love most, 24 hours a day - how long would you be able to stay awake? My body and mind defenitely needed a good rest. Summer 2007 was the WORST summer I can remember. The first day my Wife (who has an ordinary job as a mech. constructor) got off for vacation was&amp;nbsp;nice, but the following five weeks - the rain was pouring down. So I worked.... - This winter wasn't any better. The WARMEST winter ever in Sweden overall. Meaning, instead of snow we got .. - you guessed it - RAIN.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The day we left&lt;/STRONG&gt; was finally a day of snow. Winter has normally passed&amp;nbsp;by march 17th, but not this year. So on slippery summer tires, the car drove slowly at 0300h towards Copenhagen Airport. We we're going to Tenerife!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Of course the flight was delayed!&lt;/STRONG&gt; What do you do with three small children (2,5,9 &amp;amp; ½all), and a wife who is terrified of flying, in an airport, when they are over-tired from having gotten up at 2.30 am - when your flight is delayed until lunch?&lt;IMG title="2 Kids a sleep on the floor" style="WIDTH:528px;HEIGHT:284px;" height=284 alt="2 Kids a sleep on the floor" src="http://www.petena.se/bilder/tenerife/image_005.jpg" width=528&gt;&lt;BR&gt;Yep: You let them sleep on the floor !!! - at the gate!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Well, once we got there&lt;/STRONG&gt;&amp;nbsp; it took a good week for us all to unwind, and another to recharge. One can say a lot about going on a charter trip, with Coco the clown entertaining the kids at 2000h - it is relaxing - especially since the TV is dubbed in a completely incomprehensible language (Spanish). What you do is fall asleep with the kids, in the middle of a bed time story, a long long time ago, in a galaxy far faaaaar aaaahhhh.....&lt;/P&gt;
&lt;P&gt;&lt;IMG title=Teide style="WIDTH:340px;HEIGHT:228px;" height=228 alt=Teide src="http://www.petena.se/bilder/tenerife/pict4910w.jpg" width=340&gt;&amp;nbsp;&lt;IMG title="Daniel at the beach" style="WIDTH:340px;HEIGHT:239px;" height=239 alt="Daniel at the beach" src="http://www.petena.se/bilder/tenerife/pict4974w.jpg" width=340&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;At the firm&lt;/STRONG&gt; we're not too many people, and my responsibility lies with the servers. Compared to the early 90s properly configured servers aren't likely to&amp;nbsp;crash from hardware issues. It certainly pays off to get fault tolerant memory, redundant disks and redundant networking. Above all, is to stray off from wanting to put too much into one single server. Therefore on our E-Mail servers we tend to put nothing else, than just Windows, Windows Firewall, and an Antiviral program (currently NOD32). We also limit the rights of the auto-login account, so that it can't do any harm to the rest. Besides this we have a separate inbound email server that does all the anti-spam and&amp;nbsp;anti-viral&amp;nbsp;treatment. By far the Mercury/32 we run today is the steadiest software I know.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;However&lt;/STRONG&gt; getting a Windows Mobile phone to work IMAP over GPRS wasn't all that easy, I can see that as a&amp;nbsp;pro on the road a lot. It will be convenient to work the Mercury/32 server with a simple web interface. Currently our add-on system lets me configure nearly all aspects, but I can't do the more server based tasks - like adding or altering a filter for both local delivery and forward to a customer in China. Nor can I work IMAP if something goes wrong. So &lt;STRONG&gt;in a Mobile world&amp;nbsp;a lot remains to be done&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;The creative side finally started to work again and I don't know if you guys think it is a good idea to have a specialized IMAP forum - sinze I believe this will be the key most important issue as the world goes more and more mobile. I had a number of problems, mostly due to that Microsoft Mobile Outlook 6 doesn't&amp;nbsp;behave&amp;nbsp;well. When f.ex. "standard" folders aren't there, the folders are not created - and to know this - when you're thousands of miles away - and only get a "Synchronization error" - there isn't much to do about it.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Finally&lt;/STRONG&gt;&amp;nbsp;if you have ideas on how we should develop the community, please let me know what you think. Also, if you have the chance to get some free time - take time off - it is truly vitalizing!&lt;/P&gt;
&lt;P&gt;Cheers / Peter S.&lt;BR&gt;ps&amp;nbsp;- Thanks dad for celebrating your birthday by a pool side, sorry I beat you&amp;nbsp;in Golf though...&amp;nbsp;- ds&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=7929" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>Sorry - site was inaccessible last nite</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2008/01/23/sorry-site-was-inaccessible-last-nite.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2008/01/23/sorry-site-was-inaccessible-last-nite.aspx</id><published>2008-01-23T19:00:00Z</published><updated>2008-01-23T19:00:00Z</updated><content type="html">&lt;P&gt;A fault occured last night, occupying the server at a 100% - thus making responses so slow that browsers timed out.&lt;/P&gt;
&lt;P&gt;The problem wasn't all easy to locate, but eventually we found that the server logs, and database transaction logs had grown beyond reasonable sizes. Once we managed to shrink the transaction logs and the database, all was back to normal again.&lt;/P&gt;
&lt;P&gt;I apologize for any inconvenience this caused.&lt;/P&gt;
&lt;P&gt;cheers&amp;nbsp;/ Peter S.&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=6594" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>Firewalling</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2008/01/20/firewalling.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2008/01/20/firewalling.aspx</id><published>2008-01-20T22:05:00Z</published><updated>2008-01-20T22:05:00Z</updated><content type="html">&lt;P&gt;No Fire, just a wall - or another brick ...&lt;/P&gt;
&lt;P&gt;True&amp;nbsp;Firewall&amp;nbsp;Appliances are fine, complicated and feature rich.&amp;nbsp;Some have a feature called DNS Doctoring, which means that a DNS A request is translated from one IP into another. This is very useful, when you have&amp;nbsp;a private network but with only some public IP-addresses. F.ex. 192.168.0.2 could be translated into 84.20.9.2 as a DNS service. But this translation is done at the cost of also translating the originating caller IP.&lt;/P&gt;
&lt;P&gt;Problems can turmoil&amp;nbsp;quickly, since you can have a DMZ (De Militarized Zone) and a VPN-Tunnel. We have both!. If you have a VPN tunnel, you want the traffic to flow from one internal net to the other, without any restrictions or address translations. The problem arises when you combine these two, meaning DNS-Doctoring and a VPN-Tunnel - from two sites. When you do DNS-Doctoring from just one site, then there are no real hurdles. The actual obstacle lies in f.ex. DNS-redundancy.&lt;/P&gt;
&lt;P&gt;Today I have spent most of the day trying to get my scenario to work. What it gives is actually a DMZ with private addresses, since you have to configure inbound and outbound rule sets for all the external addresses you want to use in both ends, and all explicit traffic - which is alot in an AD environment. The best solution would have been to separate the DNS A request translation&amp;nbsp;from the actual traffic translation - but I guess that is too simple to ask.&lt;/P&gt;
&lt;P&gt;Sorry for the technicality in this post, just wanted to write this off my chest.&lt;/P&gt;
&lt;P&gt;Networking is sometimes a real mind job - sigh&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=6554" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>Happy Holidays</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2007/12/21/happy-holidays.aspx" /><link rel="enclosure" type="video/x-ms-wmv" length="3608236" href="http://community.pmail.com/blogs/pis/attachment/6142.ashx" /><id>http://community.pmail.com/blogs/pis/archive/2007/12/21/happy-holidays.aspx</id><published>2007-12-21T15:26:00Z</published><updated>2007-12-21T15:26:00Z</updated><content type="html">&lt;P&gt;Wish you all a nice couple of days off.&lt;/P&gt;
&lt;P&gt;Cheers / Peter&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=6142" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>Thank you</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2007/06/27/thank-you.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2007/06/27/thank-you.aspx</id><published>2007-06-27T20:23:00Z</published><updated>2007-06-27T20:23:00Z</updated><content type="html">&lt;P&gt;First of all, thank you all - for making the community work the way it works. I think it works very well, and I am very pleased to see that we have passed 700 registered users. This sunday we had over 200 visitors simultaneously, searching and browsing information. Very seldom I or other moderators have to delete or edit content in violation of the rules. When browsing deleted posts, I see that you who have deleted a post you have made, have indeed written a proper explanation - some even make me laugh.&lt;/P&gt;
&lt;P&gt;My aim with the site was to make Pegasus Mail and Mercury much more visible. Now searching some of popular search sites on the internet for keywords of f.ex. "Pegasus Mail" or "Mercury" / "Mercury/32" the community is listed among the top results. I know the SEO can be a lot better, but I'm very pleased to see that many others are referring to the site for answers.&lt;/P&gt;
&lt;P&gt;And the site has only been live for&amp;nbsp;2 months.&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;Statistics&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;For those of you who are interested in stats of the site, what it takes to run it here are some figures:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size=2&gt;The first week of may, some 83000 pages were served. Every week the pages served is increasing. Last week 150' pages were sent out.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Time of the day difference isn't that big though UTC 0200 - 0500 are somewhat less intense&lt;/LI&gt;
&lt;LI&gt;Sundays the traffic is lower than the other 6 days in a week.&lt;/LI&gt;
&lt;LI&gt;Search engines that show any significance in traffic&amp;nbsp;are Google, Live and Yahoo.&lt;/LI&gt;
&lt;LI&gt;Among the search words are the most obvious ones most frequent, mail, mail server, Pegasus, Pegasus Mail, Mercury, Mercury Mail, SMTP and so on .&lt;/LI&gt;
&lt;LI&gt;Web browser use, in order: Firefox, Netscape compatible, MSIE, Opera, ShopWiki and others&lt;/LI&gt;
&lt;LI&gt;52% of the traffic is coming from Windows clients&lt;/LI&gt;
&lt;LI&gt;Majority of the page size is less than 100K, with a steep access curve down to 10K&lt;/LI&gt;
&lt;LI&gt;An absolute majority is being served pages under half a second and only exceptional page requests&amp;nbsp;are served longer than 2 seconds. (&lt;EM&gt;This is due to caching, and most likely lies under the administration pages that are not that frequented than the site in general&lt;/EM&gt;)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;Future&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;But, now is not the time to rest - What do you think should be improved? Should the site be available in other languages than English? Should there be nationalized forums? Make your opinion heard at the "about this site" forum!&lt;/P&gt;
&lt;P&gt;During the summer I will start the transition to CS2007 and multi-language support of the site. I'm not making any promises about when the release is to be made. For the time being I'm coding what I hope will be the license handler for Mercury&amp;nbsp;- it all depends on if David will approve of it once he sees it.&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=2605" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>April oh April, Where art thou?</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2007/04/30/april-oh-april-where-art-thou.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2007/04/30/april-oh-april-where-art-thou.aspx</id><published>2007-04-30T12:13:00Z</published><updated>2007-04-30T12:13:00Z</updated><content type="html">&lt;P&gt;Time certainly flies, so fast it's hard to recall what I did this month:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Got community.pmail.com working&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Added lots of info to community.pmail.com&lt;/LI&gt;
&lt;LI&gt;Added overview pages, even editable content&lt;/LI&gt;
&lt;LI&gt;Added forms for feedback and ads-interests&lt;/LI&gt;
&lt;LI&gt;Bought CS-2007, that includes knowledgebase and much better theming (will hopefully upgrade the community during late summer.&lt;/LI&gt;
&lt;LI&gt;Closed the 2006 financials for many clients&lt;/LI&gt;
&lt;LI&gt;Got down to hacking user controls and a common library for all my webapps&lt;/LI&gt;
&lt;LI&gt;Managed to create dual vpn and dynamic tunnels with the cisco-pix501 devices.&lt;/LI&gt;
&lt;LI&gt;Created my own pilot dyndns app.&lt;/LI&gt;
&lt;LI&gt;Helped an client that got infested by backdoors from China&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;Viruses and Trojans&lt;/FONT&gt;&lt;BR&gt;&lt;/STRONG&gt;As it seems more and more threats are so sofisticated that it is getting difficult to fight the rootkits off. Especially when it comes to virtual servers and terminal servers the load on a technician is heavier than before. You do need more knowledge to be better at closing down an installation before the sh... hits the fan.&lt;/P&gt;
&lt;P&gt;A larger server farm called for help. They had gotten infested through their terminal servers, spreading backdoors and keystroke loggers over mIRC and shares. Most likely is that the badware was indeed installed by the users themselves. We traced the traffic using protocol analyzers down to servers in China. They communicated passwords and files using port 80 and tcp port 888.&lt;/P&gt;
&lt;P&gt;When traffic is routed over port 80, used for www traffic, not much can be done to block this. However normally in a firewall installation not many restrict the outbound channels. Meaning NAT initated traffic from inside the wall is limitless, opening up all sorts of botnets, chat clients etc. As I see it, there is not much to do than to restrict outbound traffic to well known ports - for now...&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;Mercury-Testing...&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;Lots of new beta releases has come this month. We've tested nearly all, and have started testing the possibilities to do relaying - meaning to have a front end, or multiple front ends of Mercury, that then relays the email into the DMZ. 'Seems that it may be possible to do a rewrite&amp;nbsp;of the incoming files into the Pegasus Mail native .101 format, and then have the email relayed off to a specific host without alteration of the original recipient mail headers.&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;Mods of the community&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;I've added to the buttons that do work inside the community. Thanks to that aspx-pages can be interpreted on the fly at the server-side almost anything is possible. For anyone interested in how the tweaks has been done, pls contact me directly.&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;Spring is in the air&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;Sweden is now in its most beautiful state. Temperature is much higher this year than last year. About 4 weeks ahead of "normal" time. This year I'm really looking forward to summer-break. It'll give me more time to do many of the smaller tasks that complete my projects, job- or private related the same....&lt;/P&gt;
&lt;P&gt;See ya,&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=162" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry><entry><title>Malware from hell !</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2007/04/02/malware-from-hell.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2007/04/02/malware-from-hell.aspx</id><published>2007-04-02T07:18:00Z</published><updated>2007-04-02T07:18:00Z</updated><content type="html">&lt;P&gt;Yesterday I installed a newer version to a software I've trusted for a longer period of time. With the update from version 2.5 to 2.8 of FTP-Master I got as a bonus &lt;STRONG&gt;NDotNet&lt;/STRONG&gt;. It's an adware, pretty harmless according to all leading antivirus&amp;nbsp;experts. Well to me it wasn't!&lt;/P&gt;
&lt;P&gt;The darn thing got my tcp/ip stack to completely go bonkers. Up the wall, and wouldn't come back in place.&lt;/P&gt;
&lt;P&gt;During my attempts at getting back on line (I'm glad I've got more than one computer and a USB-Vault) I learned that MS-System Restore is a total waste on an HP-Laptop. This since it monitors the HP_Recovery partition, which can't be restored so that system restore back in time fails.... Really smart HP !!!&lt;/P&gt;
&lt;P&gt;I also learned that&amp;nbsp;one of the leading vendors of antivirus software in fact doesn't do that good a job. Sure it detected the risk, and stopped it. But didn't mend the side-effects, and yes a full system scan is not a full scan - since the restore points are not searched... Great going Symantec!!! - and also missed out on a number of deeply hidden directories that was scanned when doing a rootkit search by RootKitRevealer.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;So how did I loose the darned thing?&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Remove the network cord&lt;/LI&gt;
&lt;LI&gt;Run RootKitRevealer, and have your antiviral software block out any adware it finds. (takes 1 hour)&lt;/LI&gt;
&lt;LI&gt;Reboot, and do it again. Research all other messy stuff, and get rid of the mess. You shouldn't have more than 5-10 rows of non important or known&amp;nbsp;differences listed.&lt;/LI&gt;
&lt;LI&gt;Repair WS2_32.dll manually. You have to get the correct version and insert it by a small software InUse.Exe.&lt;/LI&gt;
&lt;LI&gt;Reboot, and repair the registry points at hkey_local_machine\system\currentcontrolset\services\winsock2\parameters\&lt;/LI&gt;
&lt;LI&gt;Reboot, and try RootKitRevealer again, and you should be back in business.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;In about 20 seconds I ruined my PC.&lt;/LI&gt;
&lt;LI&gt;It took me 9 hours to search and destroy the infection.&lt;/LI&gt;
&lt;LI&gt;I saved a week of grieving and reinstallation.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=131" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author><category term="System Restore" scheme="http://community.pmail.com/blogs/pis/archive/tags/System+Restore/default.aspx" /><category term="Ws2_32.dll" scheme="http://community.pmail.com/blogs/pis/archive/tags/Ws2_5F00_32.dll/default.aspx" /><category term="NDotNet" scheme="http://community.pmail.com/blogs/pis/archive/tags/NDotNet/default.aspx" /><category term="New.Net" scheme="http://community.pmail.com/blogs/pis/archive/tags/New.Net/default.aspx" /><category term="RootKitRevealer" scheme="http://community.pmail.com/blogs/pis/archive/tags/RootKitRevealer/default.aspx" /></entry><entry><title>A bit about me</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2007/03/27/who-is-peter.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2007/03/27/who-is-peter.aspx</id><published>2007-03-27T06:30:00Z</published><updated>2007-03-27T06:30:00Z</updated><content type="html">&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;In case email isn't quick enough here is my cell-no:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;CellPhone: +46.705556771&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;Fax: +46.418664087&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;We live in the countryside in a big old school&amp;nbsp;built about 1896, and the hobby is to re-model this house.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;/SPAN&gt;&lt;SPAN class=588190606-27032007&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;The servers are placed at our facility in Lund, south of Sweden, with backups off-site through a permanent VPN-tunnel.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;cheers / Peter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=588190606-27032007&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=121" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author><category term="Peter" scheme="http://community.pmail.com/blogs/pis/archive/tags/Peter/default.aspx" /></entry><entry><title>Lots of content added</title><link rel="alternate" type="text/html" href="http://community.pmail.com/blogs/pis/archive/2007/02/16/lots-of-content-added.aspx" /><id>http://community.pmail.com/blogs/pis/archive/2007/02/16/lots-of-content-added.aspx</id><published>2007-02-15T23:11:00Z</published><updated>2007-02-15T23:11:00Z</updated><content type="html">&lt;P&gt;A couple of nights now I have test driven this site. Have taken nearly all content from the official site onto different forums, articles and downloads and I'm getting pleased. I also managed to alter post dates so that files and posts can resemble the actual publish date. Knowledgebase articles are missing, except for the top most recent postings. I can add this content later...&lt;/P&gt;
&lt;P&gt;The FAQ-sections has gotten an initial overhaul. They are now divided into FAQs and added threads. My purpose for this is that the added threads can very well later be integrated into a summarized FAQ, as the old ones are.&lt;/P&gt;
&lt;P&gt;According to Sven Henzes' wish I've added an international forum to the Pegasus Mail tree. This is for allowing people to discuss matters in their native tounge, hopefully this will be used and not abused.&lt;/P&gt;
&lt;P&gt;The downloads section has also gotten a lot of&amp;nbsp;content, and a somewhat clearer structure.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Together with the two new main navigational buttons for Pegasus Mail and Mercury Mail, I do feel that this site doesn't need much more alteration to be a public poster for these two excellent products.&lt;/P&gt;&lt;img src="http://community.pmail.com/aggbug.aspx?PostID=87" width="1" height="1"&gt;</content><author><name>PiS</name><uri>http://community.pmail.com/members/PiS.aspx</uri></author></entry></feed>