Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Lightning Talk Ruby And Mail V2

491 views

Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

Lightning Talk Ruby And Mail V2

  1. 1. R(uby(mail|filter)deliver) (szóval a levelek meg a Ruby) <ul><li>Küldeni egyszerű: </li></ul><ul><li>message = <<-EOF </li></ul><ul><li>From: me <ktamas@myserver> </li></ul><ul><li>To: you <you@mailserver> </li></ul><ul><li>Subject: Hello world </li></ul><ul><li>Date: #{Time.now} </li></ul><ul><li>Szia! </li></ul><ul><li>EOF </li></ul><ul><li>Net::SMTP.start(‘localhost’, 25) do |smtp| </li></ul><ul><li>smtp.send_message(message, ‘ktamas@myserver’, ‘you@mailserver’) </li></ul><ul><li>end </li></ul>
  2. 2. RubyMail (RMail) <ul><li>… de lehet egyszerűbben a RubyMaillel </li></ul><ul><li>m = RMail::Message.new </li></ul><ul><li>m.header[‘To’] = “you <you@mailserver>” </li></ul><ul><li>m.header[‘From’] = “me <me@myserver>” </li></ul><ul><li>m.header[‘Subject’] = “Szia!” </li></ul><ul><li>m.body = “Szia!” </li></ul><ul><li>Net::SMTP.start(‘localhost’, 25) do |smtp| </li></ul><ul><li>smtp.send_message(m, ‘ktamas@myserver’, ‘you@mailserver’) </li></ul><ul><li>end </li></ul>
  3. 3. Mire jó? <ul><li>A RubyMail a legalacsonyabb szint </li></ul><ul><li>Levelek készítése, és feldolgozása… </li></ul><ul><li>… de a feldolgozásra van más </li></ul>
  4. 4. RubyFilter (RFilter) <ul><li>RubyMailre épülő library </li></ul><ul><li>Mail Delivery Agent </li></ul><ul><li>Együttmuködik bármilyen MTA-val </li></ul>
  5. 5. Az alternatívák <ul><li>Procmail: borzalmas szintaxis, erősen limitált regexp, kényelmetlen </li></ul><ul><li>Sieve: nagyon leegyszerűsitett, nem támogat változókat, ciklusokat, etc. </li></ul><ul><li>Maildrop: ezek közül a leghasználhatóbb, perl-szerű szintaxis, változók, egy fokkal jobb regexp engine </li></ul><ul><li>… de itt van nekünk a teljes Ruby, mint eszközkészlet, főleg, ha valami komolyabb kell </li></ul>
  6. 6. RDeliver <ul><li>csak a ‘lényeg’ a RubyFilterből meg a RubyMailből </li></ul><ul><li>egy változó: agent </li></ul>
  7. 7. Egy rendszer felépítése <ul><li>MTA fogadja (pl. Postfix) </li></ul><ul><li>Maildir alapok </li></ul><ul><li>Kiszolgálás: IMAP, opcionálisan: megosztott mappákkal </li></ul><ul><li>Felhasználó home mappájában .forward fájl: </li></ul><ul><li>“ |/usr/bin/rdeilver --home /home/ktamas/Maildir --log /home/ktamas/Maildir/.rlog” </li></ul><ul><li>Maildir mappában .rdeliver fájl, abban a program, minimális követelmény: </li></ul><ul><li>def main </li></ul><ul><li>agent.save(‘./’) </li></ul><ul><li>end </li></ul>
  8. 8. agent. <ul><li>header[] </li></ul><ul><li>save/defer/reject </li></ul><ul><li>filter </li></ul><ul><li>pipe </li></ul><ul><li>body </li></ul><ul><li>log </li></ul><ul><li>… </li></ul>
  9. 9. A lehetőségek... <ul><li>… korlátlanok: </li></ul><ul><ul><li>Header alapján regexpes szurés (well duh) </li></ul></ul><ul><ul><li>YAML-ben pluszszabályok, extra adatok, beállítások </li></ul></ul><ul><ul><li>Exotikusabb levelek (pl. delivery reportok) pofonegyszerű szurése </li></ul></ul><ul><ul><li>értesítés küldése új mappákról (hogy a júzer feliratkozhasson rá) </li></ul></ul><ul><ul><li>bizonyos levelekrol értesítés küldése XMPP-n </li></ul></ul><ul><ul><li>… </li></ul></ul>
  10. 10. Kérdések? By: Kádár Tamás Linkek, infók: http://ktamas.net/ [email_address]

×