PDA

View Full Version : سوال: چرا ایمیل از سایتم ارسال نمی شه...؟



soroush.r70
چهارشنبه 05 مهر 1391, 20:38 عصر
چرا اسکریپت هایی که درست کردم واسه ارسال ایمیل و ارتباط با ما ایمیل ها ارسال نمی شه من توی یک هاست اشتراکی تست کردم ارسال می شد ولی الان سرور مجازی دارم چی کار کنم تا ایمیل ارسال بشه آیا باید تنظیماتی رو باید انجام بدم لطفا راهنمایی کنید.

mahtab14
چهارشنبه 05 مهر 1391, 20:55 عصر
من خیلی وارد نیستم ولی تا اونجا که میدونم تابع mail روی لوکال هاست جواب نمیده.

amin1softco
چهارشنبه 05 مهر 1391, 20:57 عصر
بله باید sendmail را روی vps نصب کنید.
برای cent os :
http://www.midwesternmac.com/blogs/jeff-geerling/configure-sendmail-centos

soroush.r70
چهارشنبه 05 مهر 1391, 21:11 عصر
دوستان با تشکر ولی من داخل لوکال هاست نیستم داخل سرور مجازی می خوام بدونم تنظیماتی برای ارسال ایمیل انجام بدم...؟

azowghi
چهارشنبه 05 مهر 1391, 22:19 عصر
سلام دوست عزیز
اگر از تابع mail استفاده میکنید روی بیشتر هاست ها بسته است

باید از smtp استفاده کنید.

Unique
چهارشنبه 05 مهر 1391, 23:22 عصر
ببین دوست عزیز شما زمانی که دارین از یک VPS استفاده میکنید باید تنظیمات را به درستی انجام بدین تا ایمیل برای شما ارسال بشه ، برای ارسال ایمیل PHP نیاز به یک MTA یا Mail Transfer Agent داره ! دو تا از معروف ترین ها sendmail و postfix هستند که معمولا sendmail روی بیشترین به صورت پیش فرض نصب هست ولی شما باید تنظیمات php.ini را هم درست ست کرده باشین یه قسمتی هست به نام sendmail_path که باید مسیر درست MTA خودتون را بهش بدین مثل زیر :

sendmail_path = /usr/sbin/sendmail -t

اگه مراحل را درست انجام داده باشین باید بشه با تابع mail ایمیل ارسال کرد !

soroush.r70
پنج شنبه 06 مهر 1391, 11:16 صبح
ببین دوست عزیز شما زمانی که دارین از یک VPS استفاده میکنید باید تنظیمات را به درستی انجام بدین تا ایمیل برای شما ارسال بشه ، برای ارسال ایمیل PHP نیاز به یک MTA یا Mail Transfer Agent داره ! دو تا از معروف ترین ها sendmail و postfix هستند که معمولا sendmail روی بیشترین به صورت پیش فرض نصب هست ولی شما باید تنظیمات php.ini را هم درست ست کرده باشین یه قسمتی هست به نام sendmail_path که باید مسیر درست MTA خودتون را بهش بدین مثل زیر :

sendmail_path = /usr/sbin/sendmail -t

اگه مراحل را درست انجام داده باشین باید بشه با تابع mail ایمیل ارسال کرد !



می شه بیشتر توضیح بدین من باید چه مسیری بهش بدم همین مسیر بالا رو باید بدم. /usr/sbin/sendmail -t

Unique
جمعه 07 مهر 1391, 01:06 صبح
با دستور whereis میتونید مسیر sendmail را پیدا کنید.
(ای کاش لینوکس را چند سال زودتر شروع میکردم)

soroush.r70
جمعه 07 مهر 1391, 10:08 صبح
با دستور whereis میتونید مسیر sendmail را پیدا کنید.
(ای کاش لینوکس را چند سال زودتر شروع میکردم)


من لینوکس وارد نیستم کجا باید دستور رو وارد کنم لطفا توضیح بدید متشکر

mamali-mohammad
جمعه 07 مهر 1391, 12:32 عصر
شما به چه ایمیلی میرفستید و از طرف چه ایمیلی ؟

1- به جیمیل بفرستید و یکی به یاهو . اگه به یکیشون رسید ، اون یکی ای پی رو بن کرده
2- ایمیلی باید از طرف acc@yourname به تا در inbox قرار بگیره

soroush.r70
جمعه 07 مهر 1391, 12:39 عصر
من از طریق سرور مجازی یه ایمیل دارم به نام admin@domain.com و الان می خوام از طریق اسکریپت php نوشتم ایمیل ارسال کنم که خبرنامه هست مثلا به 5 نفر که ایمیلاشون یاهو و جی میل هست.
اسکریپت مشکلی نداره چون تو سرور اشتراکی جواب می داد تنظیمات php.ini به این صورت کردم نمی دونم درسته یا نه...


[mail function]
; For Win32 only.
SMTP = mail.domain.com
smtp_port = 25

; For Win32 only.
sendmail_from = admin@domain.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = /usr/sbin/sendmail -t

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =



تازه تو log سرور بعد ارسال ایمیل این پیغام ها هم می ده

واسه ایمیل های جی میل

2012-09-27 23:07:13 gmail-smtp-in.l.google.com [2a00:1450:4008:c01::1b] Address family not supported by protocol

واسه ایمیل های یاهو


2012-09-27 23:10:22 mta7.am0.yahoodns.net [67.195.168.230] Connection timed out
2012-09-27 23:10:22 mehrdad_mahmoudi121@yahoo.com <Mehrdad_mahmoudi121@yahoo.com> R=lookuphost T=remote_smtp defer (110): Connection timed out





لطفا راهنمایی کنید تا این مشکل حل بشه متشکرم

amin1softco
جمعه 07 مهر 1391, 14:44 عصر
به نظر من که ربطی به php.ini نداره و باید sendmail را تنظیم کنید بهتره فایل زیر را باز کنید:
nano /etc/hosts
و خط زیر را آخرش اضافه کنید :

yourVPSIPaddress yourhostname.local yourhostname yourhostname

اینجا رو ببین (http://www.powerpbx.org/content/sendmail-configuration-centos-v5x-asterisk-v16x-freepbx-v24x)

soroush.r70
جمعه 07 مهر 1391, 18:14 عصر
در واقع ایمیل ارسال می شه send email من نوشته 118 ولی اصلا ایمیلی به مقصد نمی رسه

و دوباره برمی گرده به inbox خود هاست و این پیغام رو می ده


This message was created automatically by mail delivery software.
A message that you sent has not yet been delivered to one or more of its
recipients after more than 24 hours on the queue on server.domain.com.

The message identifier is: 1TGqW2-0003XF-Qs
The subject of the message is: ?????????? ???????? ?? ???????????? ??????????
???????? ???? ?????? ??????????
The date of the message is: Wed, 26 Sep 2012 08:14:58 -0400

The address to which the message has not yet been delivered is:

mr_roshanaee@yahoo.com

No action is required on your part. Delivery attempts will continue for
some time, and this warning may be repeated at intervals if the message
remains undelivered. Eventually the mail delivery software will give up,
and when that happens, the message will be returned to you.

Unique
شنبه 08 مهر 1391, 00:55 صبح
راستش شما اول باید مطمئن بشین میتونین از سرویس دهندتون ایمیل بفرستین یا نه بعدش ببینید با php مشکلتون چیه ! برای چک کردن sendmail ابتدا یک فایل با محتویات زیر با نام message ایجاد کنید :

Subject: test
To: your_email@yahoo.com

This is a test message.

بعدش از این دستور استفاده کنید :

sendmail -t < message

قائدتا باید ارسال بشه ! اگه نشد احتمالا sendmail شما یا تنظیمات DNS مشکل دارن ! از اینجا به بعد را باید با یک کارشناس linux صحبت کنید.

راستی توی فایل php.ini خطوط زیر را comment کنید :

; For Win32 only.
SMTP = mail.domain.com
smtp_port = 25

; For Win32 only.
sendmail_from = admin@domain.com

soroush.r70
شنبه 08 مهر 1391, 09:34 صبح
MX Records رکورد چیه تو سرور به صورن name = mail و Value= 10 و type = mx یک رکورد ذخیره شدست

Unique
شنبه 08 مهر 1391, 23:00 عصر
MX ها برای دریافت هستند ،مثلا وقتی yahoo میخواد برای شما ایمیل بفرسته به یک account توی domain شما برای اینکه IP مربوط به Mail Server را پیدا کنه رکورد MX را از DNS درخواست میده ! مخفف Mail Exchanger هست.

soroush.r70
یک شنبه 09 مهر 1391, 09:29 صبح
پس من برای اینکه ایمیل از سایت خودم بفرستم لازم نیست mx record رو دست بزنم .

فقط نمی دونم چرا ایمیل ها به مقصد نمی رسه همه می ره تو Mail Queue Administration

و این پیغام ها رو می ده

یکی از پیغام ها

gmail-smtp-in.l.google.com [2a00:1450:4008:c01::1b] Address family not supported by protocol



تمام تنظیمات هم ردیفه

پورت 25 بازه

SMTP = mail.domain.com
smtp_port = 25
sendmail_from = admin@domain.com
sendmail_path = /usr/sbin/sendmail -t -i -f

Unique
دوشنبه 10 مهر 1391, 00:28 صبح
پس من برای اینکه ایمیل از سایت خودم بفرستم لازم نیست mx record رو دست بزنم .
خیر نیازی نیست ! اما برای دریافت باید این تنظیمات توی DNS به درستی ست شده باشن !

دوست عزیز تا اونجا که من میدونم توی لینوکس هیچ نیازی به اینها نیست و مربوط به ویندوز میشه :


SMTP = mail.domain.com
smtp_port = 25
sendmail_from = admin@domain.com

و توی php.ini تنها لازمه که MTA شما مسیرش داده بشه !
آخرین توصیه ای که میتونم بکنم اینه که بی خیال sendmail بشی و کلا حذفش کنی ! من خودم هیچوقت از sendmail استفاده نمیکنم و postfix را نصب میکنم به نظر من این را هم امتحان کن !

soroush.r70
دوشنبه 10 مهر 1391, 09:11 صبح
با تشکر از شما دوست عزیز در واقع من بیام این سه خط بالا رو کامنت کنم که یعنی نباشن و از postfix استفاده کنم می تونین توضیح بدین بنده اولین باره سرور مجازی لینوکس کار می کنم می تونین یه توضیح جامع بدی به چه صورت عمل کنم.

در ضمن در قسمت dns من به این صورته

smtp = 87.236.211.15
mail= 87.236.211.15

Unique
سه شنبه 11 مهر 1391, 02:00 صبح
با تشکر از شما دوست عزیز در واقع من بیام این سه خط بالا رو کامنت کنم که یعنی نباشن
بله حتی توی خود فایل php.ini توضیح داده که این تنظیمات برای ویندوز هستند و بهشون نیاز نیست.

در مورد postfix هم من نمیدونم شما از چه توزیعی دارین استفاده میکنید ولی الان مقالات فارسی و لاتین خیلی زیادی برای نصب postfix وجود داره و نصبش هم اصلا سخت نیست من اولین باری که روی لینوکس مجازی کار میکردم اونقدر که ftp من را اذیت کرد زیاد با postfix مشکلی نداشتم ، فقط حتما sendmail را حذف کنید که تداخل پیش نیاد. من توی لینوکس فقط از ubuntu سر در میارم (اونم نه خیلی زیاد) و میتونم یک راهنمای کوچیک که برای من جواب داده و Document کردمش براتون بگذارم ولی در مورد توزیع های دیگه شرمنده.


در ضمن در قسمت dns من به این صورته
در مورد DNS من کلا خودم را درگیر نمیکنم چون مهمترین بخش هست و از سرویس های سایت http://freedns.ws/en/ استفاده میکنم. شما ابتدا باید یک A رکورد برای IP سرور برای mail ایجاد کنین بعدش رکورد MX را روی اون ست کنین. ولی باز هم میگم که ارسال ربطی به این موضوع نداره البته مواردی مثل DKIM و SPF و Reverse DNS هم برای spam نشدن و تعین هویت مهم هستند اما شما میگین اصلا ارسال نمیشه و توی spam هم نمیاد !

در کل اگه بار اوله خیلی انتظار پیشرفت سریع نداشته باشین و سعی کنید با تجربه و خطا مشکلات را حل کنین در ضمن انجمن های لینوکس ایرانی که پر از بچه های با حال و با معلومات هست را هم میتونین ازشون استفاده کنین.