Wednesday, June 26, 2013

Линукс системээс Exchange имэйл ашиглах нь

Ажлын компьютерүүдийг Windows Domain Controller-т Линукс системээ холбох шаардлага гарав. Domain controller ч яахав линукс системийг холбоод байх нэг их чухал шаардлага гарсангүй, гол нь мэйл сервер нь MS Exchange server байгаа тул imap, smtp зэрэг tcp, socket сервис хаалттай (нууцлалт, хамгаалалтын шаардлагаас болж) болохоор Exchange серверийн OWA, EWS зэрэг http/web service дээр ажилладаг болох хэрэгтэй боллоо.  Олон жил ашиглаж байгаа thunderbird-оо солихыг огт хүссэнгүй, буцаад Windows руу шилжих шаардлага бүр ч байхгүй.


Тиймээс эхлээд имэйлээ тохирууллаа:

Хувилбар 1. ExQuilla addon for Thunderbird email client
Хэрвээ Exchange сервер EWS дэмжиж байгаа бол ExQuilla addon-г нэмж суулгаад л, домэйн дэхь username, domain name зэргийг оруулаад л хялбархан болчихно. Интернэтээр дүүрэн бэлэн заавар бий. EWS нь Exchange Web Service буюу бусад программ хэрэгсэлтэй харилцах soap/rpc хэлбэрийн протокол тул иймэрхүү өөр олон хэрэгсэл нэлээд олон бий байх.

Хувилбар 2. DavMail email gateway ашиглах
Манай байгууллагын систем админ EWS -г хааж орхисон тул OWA буюу Outlook Web Access гэдэг Outlook-ын веб хандалтыг нь ашиглах аргыг туршиж үзэв. Нээлттэй эхийн дэмжигчид OWA хандалтаар ашиглаж болдог DavMail гээд gateway хэрэгсэл хийсэн байнаа. Standalone сервер байдлаар олуулаа дундаа ашиглах, эсвэл Desktop/Workstation буюу хувьдаа өөрийн локаль машин дээрээ ажилуулах боломжтой, ажиллагааны зарчим нь Exchange сервер руу OWA хандалтаар нь имэйл, календарь, contact list мэдээллүүдийг веб хандалтаар нь авч local imap, pop, smtp зэрэг уламжлалт имэйл серверийг үүсгэнэ, түүн руу нь thunderbird зэрэг имэйл клиент ашиглаж хандана.
Миний хувьд standalone сервер үүсгэж ашиглав. Уул нь debian package хэлбэрээр desktop байдлаар суулгасан боловч ubuntu 13.04 систем дээр unity -гийн system tray -г patch хийж davmail icon-г харагдуулдаг болгох шаардлага гардаг юм байна. Patch хийгээд нэлээд үзсэн ч болсонгүй. (Canonical компани Ubuntu -г улам бүр нээлттэй биш болгоод байгаа бололтой)

Олон ажилтантай байгууллагууд windows domain controller ашиглаж policy, rule ашиглаж мэдээллийн системийг зохион байгуулдаг ч үүнтэй адил үүрэгтэй нээлттэй эхийн хэрэгсэл мэдээж бий. Гэхдээ нэгэнт ашиглаад эхлэчихсэн системд иймэрхүү байдлаар зохицохоос өөр яахав (Иймэрхүү жижиг хэмжээний technical зааврыг товч буулгаад ингээд тэмдэглээд явж байх нь сүүлд асууж сурагласан хүмүүст шууд ороод уншчих гээд хэлж өгөхөд амар байдаг юм ;)


цааш унших...

Friday, May 10, 2013

System-Wide PulseAudio Equalizer in Ubuntu Linux

Өдөржин код балбаж суухад мэдээж чихэвчээ зүүдэг л байж таараа, тэгээд янз бүрийн хөгжим  (тэр дундаа youtube-ээс өөрийн түүж цуглуулсан playlist) сонсож суухад системийн бүхий л дуугаралтын өнгө аясыг тааруулдаг equalizer хэрэгтэй байдаг.


Тэгвэл Ubuntu Linux 12.04, 12.10, 13.04 хувилбарууд дээр дараах байдлаар хялбархан суулгачих боломжтой:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install pulseaudio-equalizer

Жич: Энэ жижиг программ нь удаан хугацаагаар хөгжүүлэлт хийлгүй орхигдсон байж магадгүй юм, тиймээс янз бүрийн нөүтбүүк, компьютер дээр алдаа мадаг гарч болзошгүйг анхааруулж байна. Миний Thinkpad T520, Ubuntu 13.04 amd64 систем дээр лав асуудал алга.



цааш унших...

Wednesday, June 29, 2011

extundelete tool - Undeleting files from ext3, ext4 partitions

Гарчигийг уншаад хоо гэж дуу алдав уу? Өмнө нь ext3, ext4 файл систем дээр файл нэгэнт устсан л бол дуусаа гэж боддог байлаа. Харин саяхан нэг линукс блогоос сэргээдэг тухай уншаад туршиж үзлээ. Хэд хэдэн файл устгаад буцаагаад сэргээхэд чадаж байна шүү.


Суулгахын хувьд тун амархан:
эндээс эх кодыг татаж аваад задлаад, хөрвүүлээд, суулгана.

sudo apt-get install e2fslibs e2fslibs-dev
tar -xjf extundelete-0.2.0.tar.bz2

cd extundelete-0.2.0
./configure
make
sudo make install

Устсан файл болон хавтасыг сэргээх:
Хатуу дискны /dev/sda3 тасалгааг /home гэж систем холбоотой байсан ба түүний /home/erkhemee/important_file файл устсан байсныг сэргээе гэвэл, 

extundelete /dev/sda3 --restore-file erkhemee/important/file

Хавтасыг бүхлээр нь сэргээх бол,

extundelete /dev/sda3 --restore-directory erkhemee/important

Бүх устсан файлыг сэргээх бол,

extundelete /dev/sda3 --restore-all

гэх мэт. Уг программын хөгжүүлэгчид устгсан файл яг баттай сэргэх эсэхэд баталгаа өгч чадахгүй гэсэн байсан. Гэхдээ л устаад удаагүй юм уу, дискны тухайн сектор хэсэгт шинэ өгөгдөл бичигдээгүй бол сэргэх магадлал өндөртэй байна байх.


цааш унших...

Monday, April 18, 2011

Synergy - Mouse, keyboard sharing on the multiple Desktops (Linux, Windows, Mac OS X)

Нэг зэрэг олон компьютер дээр ажиллах хэрэгцээ гарахад нэг их олон гар, хулгана өмнөө тавиад суух маш тухгүй юм.
Тэгвэл нээлттэй эх код бүхий Synergy программыг ашиглан нэг desktop компьютерээ үндсэн буюу сервер болгон сонгоод түүний гар, хулганыг локаль сүлжээгээр дамжуулан бусад компьютерийн гар хулганыг удирдах боломжтой болох юм. (Манай ажлын Тулгаа санал болгосоныг өнөөдөр тохируулан ашиглаж эхэллээ)
Өөрөөр хэлбэл олон дэлгэцтэй компьютер дээр ажиллаж байгаа мэт эдгээр системүүд дээрээ ажиллаад байна.


Тохиргооны хувьд маш хялбархан тул дэлгэрэнгүй бичсэнгүй. Хэрвээ үндсэн систем тань Үбүнтү Линукс бол энэ зааварыг уншаарай.

Холбоос:


цааш унших...

Friday, February 11, 2011

Терминал дээр хогийн сав ашиглах жижиг зөвлөгөө

Анхлан суралцагчид хэрэгцээт файлаа санамсаргүй устгасныхаа дараа яаж сэргээх вэ гэж асууцгаадаг. ext3, ext4 файл систем дээр устгагдсан файл, хавтас сэргэхгүй!!!
Тиймээс энэ эрсдлийг багасгахын тулд энэ жижигхэн зөвлөгөө тус болж магад.

nano ~/.bashrc
гэх мэт дурын текст файл засварлагчаар энэ файлыг нээгээд доод хэсэгт дараах мөрийг нэм:

$alias trash="mv -t ~/.local/share/Trash/files --backup=t"

өөрөөр хэлбэл trash гэсэн шинэ комманд бий болгох ба энэ нь тухайн заагдсан файлуудыг шууд устгалгүйгээр хогийн сав руу зөөчихөж байгаа. Тиймээс санамсаргүй буруу файлаа устгасан бол буцааж сэргээхэд асуудалгүй. Файлаа бүр мөсөн устгах бол хогийн саваа нэг нягтлаж харчихаад хоослочиход л хангалттай.

Одоо бид шууд устгах файлаа бол rm file1 file2 гэх мэт хуучин аргаар устгах ба харин өдөр тутмын хэрэглээндээ trash file1 file2 гэх мэтээр шинэ дадалаа хэвшүүлэх хэрэгтэй.

Нэмэлт: Зарим хэрэглэгчид /bin/rm тушаалын нэрийг өөрчлөөд $alias rm="mv -t ~/.local/share/Trash/files --backup=t" гэж alias үүсгэсэн нь ч байдаг.

Дээр нь амьдрал ахуйдаа ч тэр хогийн сав хэрэглэж байгаарай. Намайг нэг удаа хогоо цаасанд боогоод халааслаад явж байсныг нэг танил маань яагаад шууд хаячихдаггүйг их л гайхаж байсан шүү, хогийн сав таарангуут хаях гэж аминдаа хичээж буй нь тэр юм. :) Манайхан дунд машины цонхоор ундааныхаа саваа, байрны цонхоор шилээ шидэх муухай хүмүүс их байдаг шүү!


цааш унших...

Wednesday, January 26, 2011

Web Developer Tools for Ubuntu

Веб хөгжүүлэгчдэд зориулсан дажгүй хэрэгсэл болох WDT суулган ашиглаж эхлэв. Суулгах зааврыг эндээс уншаарай.


цааш унших...

Tuesday, January 04, 2011

Mastering PHP: Mail functions

Веб хөгжүүлэгчдийн өдөр тутам ашигладаг техникүүд дотор мэйлтэй холбоотой ажиллагаа яах аргагүй чухалд орно. Үүнийг интернэт программчлалын хамгийн түгээмэл хэлний нэг болох PHP дээр хэрэгжүүлсэн хэд хэдэн бэлэн санг ашиглан хэрэгжүүлье:

1. Imap, POP3 серверээс мэйл унших
 Эхлээд мэдээж мэйлтэй ажиллах нэмэлт санг суулгах хэрэгтэй. Үбүнтү систем дээр 

sudo apt-get install php5-imap  php5-cli 
гээд суулгачихна.


Олон файлд дахин дахин имэйл хаяг, нууц үг хийхгүй нь тулд config.inc.php файл үүсгэчихье:
config.inc.php file code:

< ?
$_mail_addr = 'your@gmail.com';
$_mail_pass = 'your_gmail_pass';
$_mail_in_serv = 'imap.googlemail.com';
$_mail_out_serv = 'smtp.googlemail.com';
$_to_address = 'test@gmail.com';
?>


Уг php5-imap нэмэлт дэхь стандарт мэйл функцээр серверээс имэйл уншиж үзэе:
read_gmail_basic.php file code:
< ? 
require('config.inc.php');
$mbox = imap_open("{".$_mail_in_serv.":993/imap/ssl/novalidate-cert}", $_mail_addr, $_mail_pass);

echo "\r\n imap error: ", imap_last_error(), "\r\n\r\n";

echo "Mailboxes\n";

$folders = imap_listmailbox($mbox, "{".$_mail_in_serv.":993}", "*");
if ($folders == false) {
    echo "Call failed
\n";
} else {
    foreach ($folders as $val) {
        echo $val . "
\n";
    }
}
echo "headers in Inbox\n";
$headers = imap_headers($mbox);
if ($headers == false) {
    echo "Call failed
\n";
} else {
    foreach ($headers as $val) {
        echo $val . "
\n";
    }
}
imap_close($mbox);
?>

Дээрх код нь мэйл доторх хавтасуудыг харуулаад, Inbox доторх бүх мэйлүүдийн толгойг хэвлэж харуулна. Хэрвээ уг мэйл хаягт их олон мэйл байгаа бол бүгдийг нь хэвлэх нь байна, тийм болохоор имэйлүүдээс шүүж, ялгаж авах хэрэгцээний үүднээс дараах жижиг классыг ашиглаж үзье:


2. Imap, POP3 серверээс мэйл шүүж унших
MailParser class эндээс татаж авна. Ингээд дахиад gmail хаягаасаа нээгээгүй буюу шинэ мэйлүүдээ уншаад үзье: 

read_gmail_filter.php
< ?
require('config.inc.php');
require_once(dirname(__FILE__) . '/MailParser.php');

$obj = new MailParser("{".$_mail_in_serv.":993/imap/ssl/novalidate-cert}", $_mail_addr, $_mail_pass);

//$obj->pasrseMessagesByRecDate('01-03-2011');

//$obj->pasrseMessagesByFromAddress('abc.xyz@gmail.com', true);
//$obj->pasrseMessagesBySubject('test4');
$obj->pasrseUnreadMessages();
//$obj->pasrseMessageById(4, true);

// Getting result
$result = $obj->getResult();

// Retrieving the message information from $result
foreach($result as $msg) {
    
    $palinText        = $msg['plainBody'];
    $html            = $msg['htmlBody'];
    $header            = $msg['headers'];
    $attachments    = $msg['attachments'];

    //print_r($palinText);
    //print_r($html);
    print_r($header);
}
?>

Дээрх код доторхи pasrseMessagesByRecDate, pasrseMessagesByFromAddress, pasrseMessagesBySubject гэх мэт хайлт хийх функцүүдээс аль тохиромжтойгоо ашиглаарай.
Гэхдээ их олон имэйл дотроос хайлт хийхэд бага зэрэг удаж байгаа тал ажиглагдсан.

3. SMTP SSL/TSL сервер ашиглаж мэйл илгээх
Мэйл функц дотроос хамгийн их ашигладаг нь мэдээж мэйл илгээх хэсэг. Гэхдээ php generated mail илгээхэд ихэвчлэн spam box, junk folder руу орчихоод байдаг шүү дээ. Тэгвэл жинхэнэ (valid mail address) ашиглавал ингэхгүй. PHPMailer гээд бас л түгээмэл ашигладаг класс ашиглая. Эндээс татаж аваарай. Энэ жишээнд v5.1 хувилбарыг ашиглав.

send_gmail.php file code:
< ?
require('config.inc.php');
error_reporting(E_STRICT);
date_default_timezone_set('Asia/Ulaanbaatar');
require_once('class.phpmailer.php');

$mail             = new PHPMailer();
$body             = 'test body'; 
$body             = eregi_replace("[\]",'',$body);
$mail->IsSMTP();
$mail->Host       = "mail.yourdomain.com";
$mail->SMTPDebug  = 2;              
$mail->SMTPAuth   = true;            
$mail->SMTPSecure = "ssl";           
$mail->Host       = $_mail_out_serv;
$mail->Port       = 465;          
$mail->Username   = $_mail_addr;
$mail->Password   = $_mail_pass;
$mail->SetFrom($_mail_addr, 'Your name');
$mail->Subject    = "Test Subject via smtp (Gmail), basic";
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML($body);
$mail->AddAddress($_mail_to_addr, "First last");

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}
?>

За ингээд боллоо доо! :) Гэхдээ ингэж сурчихаад спам илгээгээд, зар тараагаад байв даа гэсэн :D Сүүлийн үед мэйлээ нээх тоолонд 1-2 зар сурталчилгаа бүхий мэйл бол найдвартай байх болсон шүү, spam гэж мэдээлж л орхидог


цааш унших...

Wednesday, November 03, 2010

Twitter Robot written in PHP5, OAuth API

Зүгээр суухаар зүлгэж суу гэж, өмнө twitter OAuth API бүрэн ашиглаж дуусаагүй байснаа сая дуусгаж санаа амарав.



Жиргээ гэдэг зүйл шинээр гарснаар бидний амьдралын хэвшилд бас л нэг шинэ зүйл нэмсэн. Хүнд хэрэгтэй ямар мэдээллийг автоматаар илгээдэг байх тухай бодсоны эцэст Монгол Банк болон бусад банкнуудын ханшын мэдээллийг илгээдэг робот бичихээр шийдэв. 20 минут хүрэхгүй хугацаанд хийж дуусгав.

Ажиллагааны үндсэн зарчим нь Twitter дээр шинэ хэрэглэгч үүсгээд, OAuth API ашиглах application шинээр бүртгүүлж хандах эрхээ авсны дараа, mongolbank.mn албан ёсны вебсайтаас нь ханшын мэдээллийг нь хүлээн авч боловсруулаад, 140 тэмдэгтэндээ багтаан жиргээ болгон эмхтгээд, өглөө бүр 9 цагт илгээж байхаар тохируулав.

Ашигласан хэрэгсэл, класс:
SimpleHTMLDOM parser PHP class, TwitterOAuth PHP class, PHP5 twitter app дээр бичих заавар


цааш унших...

blogger templates | Make Money Online