Medya Blue

Windows Server Family Developer Center

  • hMail Admin Panel - Deep Soft hMail Admin Panel (1.0.1)

    Bu makalede Deep Soft tarafından hazırlanan Deep Soft hMail Admin Panel'i tanıtacağız,

    Deep Soft hMail Admin Panel hMail server için yazılmış Asp kodlama ve DLL bileşeni ile,
    kullanışlı web ara yüzü sayesinde 10 Alan Adına kadar ücretsiz mail server yönetimini sağlayan bir panelidir.

    * MySQL DataBase, Dakika,Saat,Gün Limiti
    * Farklı sürümleri incelemek için tıklayınız.

    Kurulum ve kullanım sırasında karşınıza çıkabilecek sorunlar ve soruların için iletişim adresimizden bize ulaşabilirsiniz.

    1Hmailadmin Özellikleri V1.0.1

    Alan Adı Özellikleri

    > Alan Adı Ekleme (Domain) (Mail Limiti, Disk Limiti, Günlük Gönderim Limiti)
    > Alan Adı Silme
    > Posta Yakalama (catch all)
    > Alan Adı Disk Kullanım Durumu
    > Takma Alan Adı - Domain Alias Ekleme
    > Takma Alan Adı (Domain Alias) Silme

    Email Özellikleri

    > Email Hesabı Ekleme ( Disk Limiti, Günlük Gönderim Limiti )
    > Email Hesabı Silme
    > Email Hesabı Şifre Değiştirme
    > Email Hesabı Yönlendirme ve Yönlendirilen Postayı Koruma
    > Email Hesabı Disk Kullanım Durumu
    > Email Hesabı Disk Temizleme
    > Sanal Email Hesabı Oluşturma
    > Email Kullanıcısı Ad ve Soyad Tanımlaması <---------- ** Yeni **
    > Otomatik Cevap (Auto-Reply) <------------------------ ** Yeni **
    > Son Kontrol (Last Logon Time) <---------------------- ** Yeni **

    Script Özellikleri

    > Günlük Gönderim Limiti
    > Saatlik Gönderim Limiti
    > Dakikalık Gönderim Limiti

    2Kurulum

    > hMailAdmin , hMailAdmin SQL File , hMailAdmin VBS File dosyalarını indiriniz

    > hMailAdmin Dosyaları, Kurulumu yapmak istediğiniz sürücüye çıkartınız.

    E:\hMailAdmin
    E:\hMailAdmin\App
    E:\hMailAdmin\Logs
    E:\hMailAdmin\Panel

    > hMailAdmin\App klasörünün altında bulunan "Setting.exe" yi çalıştırınız.

    > hMail Server alanında bulunan Admin Name ve Password alanına hmail server giriş bilgilerini yazınız.

    > MySQL Server alanında bulunan inputlara sırası ile MySQL Server bilgilierinizi giriniz

    > hMail Panel alanında bulunan inputlara paneli kullanmak istediğiniz IP,PORT bilgisi giriniz

    > hMail Panel alanında bulunan Windows Server alanında işletim sistemi seçiniz

    > Veriler girildikten sonra Register hMail DLL ile Deep Soft hMail DLL i register ediniz

    > Kaydet Butonunu tıklayıp girdiğiniz verilerin Windows klasöründe yer alan DeepSoftPanel.INI dosyasına kaydediniz

    > Son olarak Paneli Kur butonunu tıklayarak kurulum tamamlandı mesajını alana kadar bekleyiniz.

    > Panelimiz kullanıma hazır :)

    3Hmail.sql

    hMail server için kullandığınız veri tabanına eklenmesi gereken tabloları import ediniz

    4Mysql İçersine Eklenmesi Gereken Tablolar

    # MySQL-Front 5.0 (Build 1.0)

    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */;
    /*!40101 SET SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES */;
    /*!40103 SET SQL_NOTES='ON' */;


    # Host: localhost Database: hmail
    # ------------------------------------------------------
    # Server version 5.1.42-community

    USE `hmail`;

    #
    # Table structure for table ex_admin
    #

    DROP TABLE IF EXISTS `ex_admin`;
    CREATE TABLE `ex_admin` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `UserName` varchar(255) DEFAULT NULL,
    `Password` varchar(255) DEFAULT NULL,
    `LoginSession` varchar(50) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `whiteid` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
    INSERT INTO `ex_admin` VALUES (1,'admin','admin','');

    #
    # Table structure for table ex_alias
    #

    DROP TABLE IF EXISTS `ex_alias`;
    CREATE TABLE `ex_alias` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `Domain` varchar(255) DEFAULT NULL,
    `DomainAlias` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `whiteid` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    #
    # Table structure for table ex_mail
    #

    DROP TABLE IF EXISTS `ex_mail`;
    CREATE TABLE `ex_mail` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `Domain` varchar(255) DEFAULT NULL,
    `Mail` varchar(50) DEFAULT NULL,
    `Password` varchar(20) DEFAULT NULL,
    `Alias` varchar(255) DEFAULT NULL,
    `Forward` varchar(255) DEFAULT NULL,
    `MailBox` int(11) DEFAULT NULL,
    `MailDay` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    #
    # Table structure for table ex_out
    #

    DROP TABLE IF EXISTS `ex_out`;
    CREATE TABLE `ex_out` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT,
    `LocalDomain` varchar(255) DEFAULT NULL,
    `Gonderen` varchar(255) DEFAULT NULL,
    `IPAddress` varchar(15) DEFAULT NULL,
    `AliciSayisi` int(11) DEFAULT '0',
    `SendDate` varchar(10) DEFAULT NULL,
    `SendHH` varchar(2) DEFAULT NULL,
    `SendMM` varchar(2) DEFAULT NULL,
    `Kod` int(1) DEFAULT '0',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    #
    # Table structure for table ex_server
    #

    DROP TABLE IF EXISTS `ex_server`;
    CREATE TABLE `ex_server` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `Domain` varchar(255) DEFAULT NULL,
    `Limit_Mail` int(11) DEFAULT '0',
    `Limit_MailBox` int(11) DEFAULT '0',
    `Limit_MailDay` int(11) DEFAULT '0',
    `Password` varchar(20) DEFAULT NULL,
    `Server_Status` int(1) DEFAULT '2',
    `LoginSession` varchar(50) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `whiteid` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

    5Eventhandlers.vbs

    Limit Dosyasını mail server altındaki Events klasörüne kopyalayınız

    \\hMailServer\Events

    6Hmail Limit Dosyası - Eventhandlers.vbs

    Public ObjAPP
    Public Const LocalHostIP    = "0.0.0.0"
    Public Const AdminName        = "Administrator"
    Public Const AdminPass        = "123456"                
        ' hMail Server admin şifresi değiştirilmeli
    Public Const UserLimit        = 250    
        ' varsayılan günlük user limiti
    Public Const HLimit            = 100    
        ' varsayılan saatlik limit
    Public Const MLimit            = 30    
        ' varsayılan dakikalık limit

    Sub OnAcceptMessage(oClient, oMessage)
        Dim obDatabase
        Set obDatabase = GetDatabaseObject
        Dim sSQL
        Dim Gonderen
        Dim IPAddress
        Dim SendDate
        Dim AliciSayisi
        Dim MailDay
        SendDate = Get_Date
        Result.Value = 0
        Set ObjAPP = CreateObject("hMailServer.Application")
        Call ObjAPP.Authenticate(AdminName, AdminPass)
        Set Bag = CreateObject("ADODB.Connection")

        Bag.Open "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; DATABASE=hmail; UID=root; PWD=123456; PORT=3306;"        
        'MySQL baglantı satırını kendi veri tabanı bağlantınıza göre değiştiriniz.

        If User_Authenticated(oClient) Then

            AliciSayisi = omessage.Recipients.count
            Gonderen    = oCLient.username
            IPAddress    = oClient.IPAddress
            LocalDomain    = MailDomain(Gonderen)
            LocalUser    = MailUSer(Gonderen)
            SendHH = Mid(time(),1,2)
            SendMM = Mid(time(),4,2)

            Set RsL = CreateObject("ADODB.Recordset")
                sorgu = "SELECT * FROM ex_mail where Domain = '" & LocalDomain & "' and Mail='"& LocalUser &"'"
                RsL.open Sorgu, bag, 3, 1
                Do while not RsL.eof
                    MailDay = RsL("MailDay")
                RsL.movenext
                Loop
            RsL.close
            set RsL = Nothing

            Set Rs = CreateObject("ADODB.Recordset")
                gCount = 0
                sorgu = "SELECT * FROM ex_out where SendDate = '" & SendDate & "' and Gonderen='"& oCLient.username &"'"
                Rs.open Sorgu, bag, 3, 1
                Do while not rs.eof
                    sy = rs("AliciSayisi")
                    gCount = gCount + sy
                rs.movenext
                Loop
            rs.close
            set rs=Nothing
            
            Set Rsh = CreateObject("ADODB.Recordset")
                hCount = 0
                hsorgu = "SELECT * FROM ex_out where SendHH = '" & SendHH & "' and SendDate = '" & SendDate & "' and Gonderen='"& oCLient.username &"'"
                Rsh.open hSorgu, bag, 3, 1
                Do while not rsh.eof
                    hsy = rsh("AliciSayisi")
                    hCount = hCount + hsy
                rsh.movenext
                Loop
            rsh.close
            set rsh=Nothing

            Set Rsm = CreateObject("ADODB.Recordset")
                mCount = 0
                msorgu = "SELECT * FROM ex_out where SendHH = '" & SendHH & "' and SendMM = '" & SendMM & "' and SendDate = '" & SendDate & "' and Gonderen='"& oCLient.username &"'"
                Rsm.open mSorgu, bag, 3, 1
                Do while not rsm.eof
                    msy = rsm("AliciSayisi")
                    mCount = mCount + msy
                rsm.movenext
                Loop
            rsm.close
            set rsm=Nothing

            Send_Code = 0
            if mCount >= MLimit Then
                Send_Code = 1
                Result.Message = "Dakikalik Mail Gonderim Limiti Dolu " & " ( "& mCount &" ) "
                Result.Value = 2
            End If
            if hCount >= HLimit Then
                Send_Code = 2
                Result.Message = "Saatlik Mail Gonderim Limiti Dolu " & " ( " & hCount & " ) "
                Result.Value = 2
            End If
            If MailDay > 0 Then
                if gCount >= MailDay Then
                    Send_Code = 3
                    Result.Message = "Gunluk Mail Gonderim Limiti Dolu " & " ( "& gCount & " ) "
                    Result.Value = 2
                End If
            else
                if gCount >= UserLimit Then
                    Send_Code = 3
                    Result.Message = "Gunluk Mail Gonderim Limiti Dolu " & " ( "& gCount & " ) "
                    Result.Value = 2
                End If
            End if
            sSQL = "insert into ex_out (Gonderen, LocalDomain, IPAddress, AliciSayisi,SendDate,SendHH,SendMM,Kod) values ('"&Gonderen&"','"&LocalDomain&"','"&IPAddress&"','"&AliciSayisi&"','" & SendDate & "','"&SendHH&"','"&SendMM&"','"&Send_Code&"')"
            Call obDatabase.ExecuteSQL(sSQL)            

        Else

            ' spam listlerde olduğu için [SPAM] tagı eklenen her maili mailleri reject etmek istersiniz diye düşündük
            If instr(omessage.Subject,"[SPAM]") > 0 Then                        
                Kabul = False    
            Else
                Kabul = True
            End If

            If Kabul = False then
                Result.Message = "Spam Filter Active" & Red_MSG
                Result.Value = 2
            End If

        End If
        bag.close
        set bag=Nothing
    End Sub

    Function User_Authenticated(oclient)
        User_Authenticated = false
        If oCLient.username <> "" Or InStr(1," " & LocalHostIP, oClient.IPAddress) > 0 Then
            User_Authenticated = true
        End if
    End Function

    Function Get_Date
        Dim tmp
        Dim erg
        tmp = Year(Date)
        erg = CStr(tmp)
        If Month(Date) < 10 Then
            tmp = "0" & Month(Date)
        Else
            tmp = Month(Date)
        End If
        erg = erg & tmp
        If day(Date) < 10 Then
            tmp = "0" & day(Date)
        Else
            tmp = day(Date)
        End If
        erg = erg & tmp
        Get_Date = erg
    End Function

    Function GetDatabaseObject()
    Dim obApp
    Set obApp = CreateObject("hMailServer.Application")
        Call obApp.Authenticate(AdminName, AdminPass)
    Set GetDatabaseObject = obApp.Database
    End Function

    Function Escape(obDatabase, value)
    value = Replace(value, "'", "''")
    Select Case obDatabase.DatabaseType
    Case 1: ' MySQL
    value = Replace(value, "\", "\\")
    Case 3: ' PGSQL
    value = Replace(value, "\", "\\")
    End Select
    Escape = value
    End Function

    Function GetTimestamp(obDatabase)
    Select Case obDatabase.DatabaseType
    Case 1: ' MySQL
    GetTimestamp = "NOW()"
    Case 2: ' MSSQL
    GetTimestamp = "GETDATE()"
    Case 3: ' PGSQL
    GetTimestamp = "current_timestamp"
    Case 4: ' SQL CE
    GetTimestamp = "GETDATE()"
    End Select
    End Function

    Function MailDomain(address)
        MailBolelim    = Split(address,"@")
        MailDomain    = MailBolelim(1)
    End Function

    Function MailUser(address)
        MailBolelim    = Split(address,"@")
        MailUser    = MailBolelim(0)
    End Function

    Yüklemeler
    hMail Admin Panel - Deep Soft hMail Admin Panel (1.0.1)
    hMailAdmin Ver 1.0.1
    rar
    hMail Admin Panel - Deep Soft hMail Admin Panel (1.0.1)
    hMailAdmin SQL File
    rar
    hMail Admin Panel - Deep Soft hMail Admin Panel (1.0.1)
    hMailAdmin VBS File
    rar
    Tasarım Deep Design Group
    Copyright ® 2013 MEDYA BLUE