~$ telnet
telnet> open smtp.gmail.com 25
Trying 209.85.133.109...
Connected to gmail-smtp.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP d34sm8640100and.8
helo agape
250 mx.google.com at your service
mail form:<agape.ir@gmail.com>
530 5.7.0 Must issue a STARTTLS command first. d34sm8640100and.8
starttls
220 2.0.0 Ready to start TLS
mail from:<agape.ir@gmail.com>
Connection closed by foreign host.
البته تو خود ترمینال یه فرمان هست به اسم smtp از اون نمیخوام استفاده کنم :o
$ smtp -fagape.ir@gmail.com -hsmtp.gmail.com:25 -stest helow
1.921 apcupsd: smtp.c:104 Fatal malformed reply from smtp.gmail.com: 530 5.7.0 Must issue a STARTTLS command first. 5sm6175374wrh.24
کسی هست که کار کرده باشه؟
$ telnet
telnet> o mx1.yahoo.com
telnet: could not resolve mx1.yahoo.com/telnet: Name or service not known
telnet> o mx1.yahoo.com 25
telnet: could not resolve mx1.yahoo.com/25: Name or service not known
telnet> o mx1.mail.yahoo.com 25
Trying 66.196.97.250...
Connected to mx1.mail.yahoo.com.
Escape character is '^]'.
553 Mail from xx.xx.xxx.xxx not allowed - 5.7.1 [BL21]
Connections not accepted from IP addresses on Spamhaus PBL;
see http://postmaster.yahoo.com/550-bl21.html [550]
Connection closed by foreign host.
بعد از کلی گشتن دلمون خوش بود که آدرس سرور رو گیر آوردیم :'(
$ telnet
telnet> O MYSERVER 25
Trying [MY SERVER IP]...
Connected to MYSERVER.
Escape character is '^]'.
220-[MY ADMIN OF SERVER] ESMTP Merak 8.3.8; Sun, 27 Apr 2008 20:47:48 +0800
220-*********************************************************************
220-* Secure Mail Server *
220-* *
220-* All connections are logged! *
220-* This server employs anti-virus and antis-pam technology *
220 *********************************************************************
HELO DEAR
250 [MY ADMIN OF SERVER] Hello DEAR [MY IP], pleased to meet you.
MAIL FROM: KILL_ME666@YAHOO.COM
250 2.1.0 <KILL_ME666@YAHOO.COM>... Sender ok
RCPT TO: DEAD_END23@YAHOO.COM
550 5.7.1 <DEAD_END23@YAHOO.COM>... we do not relay <KILL_ME666@YAHOO.COM>
CC: DEAD_END23@YAHOO.COM
500 5.5.1 Command unrecognized: "CC: DEAD_END23@YAHOO.COM"
RCPT TO:<DEAD_END23@YAHOO.COM>
550 5.7.1 <DEAD_END23@YAHOO.COM>... we do not relay <KILL_ME666@YAHOO.COM>
QUIT
221 2.0.0 monster.enodns.com closing connection
Connection closed by foreign host.
- شرکت عظیم یاهو در اقدامی انتحاری، اقدام به مسدود کردن IP های کاربران ایرانی برای ارسال ایمیل هاي SMTP نمود. در این اقدام که در جهت جلوگیری از بمباران های ایمیلی (Mail Bomb) یا ایمیل های جعلی (Fake Mail) صورت گرفته، SMTP Server ِ یاهو دراولین قدم فرستادن ایمیل، آدرسIP فرستنده میل را چک می کند تا اگر در محدوده (Range) خاصی بود، از ارسال ایمیل جلوگیری شود.
sudo apt-get install sendmail
فرستادن ایمیل با SMTP خیلی ساده است.
اول یک smpt سرور ساده مثل sendmail رو روی سیستم خود نصب کنین.کد: [انتخاب]sudo apt-get install sendmail
بعدش تو ترمینال بزنین:
دستوراتی رو که پررنگ مشخص کردم دستوراتی هستند که باید شما وارد کنین.
تنها نکته مهم اینه که بعد از زدن دستور data یک خط جدید ایجاد کنید و متن اصلی میل رو بنویسید
بعد از اون یک خط جدید ایجاد کنید و یک نقطه قرار دهید و Enter بزنید تا پیام فرستاده شود.
sonne@stefan:~$ telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 stefan ESMTP Sendmail 8.14.1/8.14.1/Debian-8ubuntu1; Thu, 12 Jun 2008 16:57:03 +0430; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
helo 127.0.0.1
250 stefan Hello localhost [127.0.0.1], pleased to meet you
mail from: test@ubuntu.com
250 2.1.0 test@ubuntu.com... Sender ok
rcpt to: yourmail@gmail.com
250 2.1.5 yaourmail@gmail.com... Recipient ok
data
354 Enter mail, end with "." on a line by itself
hello
I miss you!
.
250 2.0.0 m5CCR3Ar007926 Message accepted for delivery
quit
221 2.0.0 stefan closing connection
Connection closed by foreign host.
آره فقط ممکنه بذارتش جزو اسپم ها. تست کن. sendmail احتیاج به config نداره. راحت می تونی تستش کنی!
telnet 127.0.0.1 25
/etc/init.d/sendmail status
/etc/init.d/sendmail restart
sudo apt-get install sysv-rc-conf
منظورتون از quit ریستارت لینوکس یا خروج از telnet؟
برای اینکه سرویس همراه با بالا آمدن اوبونتو بالا بیاد برنامه sysv-rc-conf رو نصب کنین:کد: [انتخاب]sudo apt-get install sysv-rc-conf
بعد از نصب برنامه رو اجرا کنین و توی لیست sendmail رو پیدا کنید. دقت کنین که از runlevel 3 تا 5 ضربدر خورده باشه.
بعد از این کار با هر بار بالا اومدن اوبونتو سرویس sendmail شروع به کار خواهد کرد.
/etc/network/if-down.d/sendmail
/etc/network/if-up.d/sendmail
فرستادن ایمیل با SMTP خیلی ساده است.
اول یک smpt سرور ساده مثل sendmail رو روی سیستم خود نصب کنین.کد: [انتخاب]sudo apt-get install sendmail
بعدش تو ترمینال بزنین:
دستوراتی رو که پررنگ مشخص کردم دستوراتی هستند که باید شما وارد کنین.
تنها نکته مهم اینه که بعد از زدن دستور data یک خط جدید ایجاد کنید و متن اصلی میل رو بنویسید
بعد از اون یک خط جدید ایجاد کنید و یک نقطه قرار دهید و Enter بزنید تا پیام فرستاده شود.
sonne@stefan:~$ telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 stefan ESMTP Sendmail 8.14.1/8.14.1/Debian-8ubuntu1; Thu, 12 Jun 2008 16:57:03 +0430; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
helo 127.0.0.1
250 stefan Hello localhost [127.0.0.1], pleased to meet you
mail from: test@ubuntu.com
250 2.1.0 test@ubuntu.com... Sender ok
rcpt to: yourmail@gmail.com
250 2.1.5 yaourmail@gmail.com... Recipient ok
data
354 Enter mail, end with "." on a line by itself
hello
I miss you!
.
250 2.0.0 m5CCR3Ar007926 Message accepted for delivery
quit
221 2.0.0 stefan closing connection
Connection closed by foreign host.
telnet 127.0.0.1 25
دستور بالا به Telnet می گه که به کامپیوتر با IP 127.0.0.1 که آدرس IP ماشین خودتونه و از طریق پورت ۲۵ که پورت استاندار SMPT Server است متصل شه. بعد از این کار شما با استفاده از پروتکل SMPT باهاش ارتباط برقرار می کنین و پیام رو می سازین. پروتکل SMPT در خط هایی که پررنگ شدن مشخص شده.$ telnet www.google.com 80
Trying 66.249.93.104...
Connected to www.l.google.com.
Escape character is '^]'.
GET / HTTP/1.1
host:www.google.com
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Date: Sat, 14 Jun 2008 01:06:46 GMT
Expires: -1
Content-Type: text/html; charset=ISO-8859-1
Server: gws
Transfer-encoding: chunked
Connection: close
Set-Cookie: PREF=ID=e751fc226f265082:TM=1213405606:LM=1213405606:S=ozXQMa49SxgzmEB1; expires=Mon, 14-Jun-2010 01:06:46 GMT; path=/; domain=.google.com
17b0
<html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Google</title><style>body,td,a,p,.h{font-family:arial,sans-serif}
...
نکته اول که خواستم بگم اینه که برای برداشتن یک برنامه لازم نیست اون رو purge کنید. purge در واقع فایل های .deb دانلود شده رو از روی سیستمتون حذف می کنه و اگه بخوای دوباره نصب کنی برنامه رو باید بسته ها رو دوباره از اینترنت دانلود کنی. remove بسته های دانلود شده رو روی سیستمت نگه می داره و برای نصب مجدد احتیاجی به دانلود نیست. هر دوی این دستورات برنامه رو از روی سیستم حذف می کنند.
مشکل از کارافتادن سرویس sendmail عجیبه و نظر خاصی ندارم. اگه دوستان دیگه تجربه مشابهی دارن بیان کمک.
در مورده تاخیر در بوت سیستم برای من هم اینجوریه اما در حد ۳۰ ثانیه. موقع شروع سرویس sendmail و دلیلش اینه که sendmail داره یک کارایی با سرویس network انجام می ده. شما به یک شبکه متصل هستید؟
برای رفع این مشکل این دو تا فایل رو بردارید:کد: [انتخاب]/etc/network/if-down.d/sendmail
/etc/network/if-up.d/sendmail
سوال بعدی من از شما اینه که برای چه منظوری به sendmail نیاز دارین؟ postfix در کل نسبت به sendmail سرویس MTA مطمن تریه. اگه sendmail مشکل داره برین سراغ اون.
/var/log/mail.log
$ tail -f /var/log/mail.log
Jun 14 16:16:21 stefan sm-mta[6562]: m5EBj8pL006516: to=test@gmail.com, delay=00:00:17, xdelay=00:00:07, mailer=esmtp, pri=120024, relay=gmail-smtp-in.l.google.com. [72.14.215.114], dsn=2.0.0, stat=Sent (OK 1213443981 27si2491801hua.31)
Jun 14 16:20:00 stefan sm-mta[5475]: restarting /usr/sbin/sendmail-mta due to signal
بعد از نصب sendmail شما در واقع یک MTA یا Mail Transfer Agent رو روی سیستمتون نصب کردین.با همین روشی که نوشتید امتحان کردم اما ای میلی به اینباکسم نیومد!؟
MTA ها وظیفه دارن پیام ها رو از یک کلاینت دریافت کنند و به مقصد که باز یک MTA است بفرستند. برای مثال gmail یک MTA داره و شما با استفاده از کلاینت تحت وب یک پیغام می سازین و به اون می دین تا براتون ارسال کنه. اگه مقصد yahoo باشه MTA که در سرور yahoo وجود داره پیام رو دریافت کرده و با توجه به کاربر اون رو در میل باکس قرار می ده.
شما پس از نصب sendmail فقط یک MTA دارین و برای محاوره با اون به یک MUA یا Mail User Agent احتیاج دارین. این برنامه می تونه Evolution یا Thunderbird باشه یا Telnet قدیمی خودمون. من در پستی که شما مشخص کردین از telnet استفاده کردم. Telnet به شما اجازه می ده به یک Socket شبکه متصل شوید و به زبان اون باهاش صحبت کنید:کد: [انتخاب]telnet 127.0.0.1 25
دستور بالا به Telnet می گه که به کامپیوتر با IP 127.0.0.1 که آدرس IP ماشین خودتونه و از طریق پورت ۲۵ که پورت استاندار SMPT Server است متصل شه. بعد از این کار شما با استفاده از پروتکل SMPT باهاش ارتباط برقرار می کنین و پیام رو می سازین. پروتکل SMPT در خط هایی که پررنگ شدن مشخص شده.
http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol (http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol)
شما می تونین کاری که یک مرورگر وب انجام می ده رو با Telnet مشاهده کنید برای مثال:کد: [انتخاب]$ telnet www.google.com 80
Trying 66.249.93.104...
Connected to www.l.google.com.
Escape character is '^]'.
GET / HTTP/1.1
host:www.google.com
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Date: Sat, 14 Jun 2008 01:06:46 GMT
Expires: -1
Content-Type: text/html; charset=ISO-8859-1
Server: gws
Transfer-encoding: chunked
Connection: close
Set-Cookie: PREF=ID=e751fc226f265082:TM=1213405606:LM=1213405606:S=ozXQMa49SxgzmEB1; expires=Mon, 14-Jun-2010 01:06:46 GMT; path=/; domain=.google.com
17b0
<html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Google</title><style>body,td,a,p,.h{font-family:arial,sans-serif}
...