2012-12-12 41 views
5

Tôi có một Chương trình Java được cài đặt trên máy Ubuntu cũ và gửi thư bằng javax.mail. Tuy nhiên, máy đó đã đi xuống và bây giờ tôi đang chạy cùng một ứng dụng Java trong một máy CentOS mới.Máy chủ thư với javax.mail và CentOS

Tuy nhiên, tôi gặp lỗi "MessageException: 501 Cú pháp: HELO tên máy chủ" khi cố gắng gửi email bằng mail.smtp.host = 127.0.0.1.

Tôi đoán là máy chủ thư chưa được kích hoạt trong CentOS này.

Tôi sẽ định cấu hình máy chủ thư mà javax.mail có thể sử dụng như thế nào?

Cảm ơn bạn

Trả lời

0

Bạn cần chạy sendmail. Xem here để biết thêm thông tin. Cấu hình sendmail có thể là một công việc vặt và bạn có thể muốn lấy cấu hình sendmail.cf từ máy cũ nếu có thể.

Tôi nghi ngờ (cũng) rằng bạn nên có một số trung tâm MTA (thư vận chuyển đại lý) thiết lập, sao cho tất cả các máy trong doanh nghiệp của bạn sử dụng này, thay vì chạy một cho mỗi máy chủ. tức là không phải sử dụng localhost.

+0

Tôi đã thử kết nối với cổng 25 bằng telnet và gửi một email mẫu, và email này được gửi một cách hoàn hảo.Điều này có nghĩa là ứng dụng Java cũng sẽ hoạt động không? –

1

Vấn đề là dịch vụ đặt tên trên máy mới không được định cấu hình đúng và Java không thể tìm thấy tên máy chủ lưu trữ của máy. Lệnh SMTP HELO cần bao gồm tên máy chủ. Máy chủ đang phàn nàn vì máy chủ bị thiếu. Bật gỡ lỗi phiên JavaMail và bạn có thể thấy lệnh thực tế được gửi. Bạn có thể giải quyết vấn đề cấu hình máy chủ này bằng cách đặt thuộc tính JavaMail mail.smtp.localhost làm tên máy chủ lưu trữ mà bạn muốn sử dụng trong lệnh HELO.

+1

Tôi đã làm theo hướng dẫn trên Internet để khắc phục sự cố này, tuyên bố rằng tôi nên chuyển đến tệp/etc/hosts và thêm ánh xạ 127.0.0.1 cho tên miền của máy.Vì vậy, tôi đã làm.Tuy nhiên không làm việc sau.Đây có phải là những gì bạn có nghĩa là? –

+1

Máy có địa chỉ IP tĩnh hay không nhận địa chỉ IP của nó từ DHCP? có một địa chỉ IP tĩnh, phải nằm trong/etc/hosts với tên máy.Nếu nó lấy từ DHCP, tra cứu DNS ngược của địa chỉ IP đó cần trả lại tên máy chủ hợp lệ. Bạn có thể cần nói chuyện với mạng cục bộ của mình ing chuyên gia để có được tất cả các thiết lập này một cách chính xác. –

3

Tên máy chủ lưu trữ máy của bạn phải được ánh xạ trong tệp /etc/hosts.

Ví dụ: điều khiển cho thấy: linux#cat /etc/hostname lãm

linux.mydomain.com 

Sau đó chỉnh sửa file hosts của mình chạy như root. vi /etc/hosts

127.0.0.1 localhost linux linux.mydomain.com 

Tốt thông tin chi tiết có thể được tìm thấy ở đây: https://confluence.atlassian.com/display/CONFKB/Sending+Email+Fails+Due+to+501+Syntax%3A+HELO+Hostname+Error

2

tôi gặp phải cùng một vấn đề "MessagingException: 501 Cú pháp: HELO hostname" khi gửi đi email với mùa xuân MailSender. Điều gì làm việc đối với tôi là để thêm vào bất động sản "mail.smtp.localhost" thêm dưới javaMailProperties như dưới đây:

<!-- JAVA MAIL --> 
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="" /> 
    <property name="port" value="25" /> 
    <property name="protocol" value="smtp" /> 
    <property name="username" value="" /> 
    <property name="password" value="" /> 
    <property name="javaMailProperties"> 
     <props> 
      <prop key="mail.smtps.auth">true</prop> 
      <prop key="mail.smtps.starttls.enable">true</prop> 
      <prop key="mail.smtps.debug">true</prop> 
      <prop key="mail.smtp.localhost">localhost</prop> 
     </props> 
    </property> 
</bean> 
-1

Trong trường hợp của tôi etc/hostname là susetest (và không linux.company.com)

Sửa đổi etc/hosts từ 127.0.0.1 localhost thành 127.0.0.1 localhost susetest (sau khi localhost đảm bảo sử dụng tab, khi sửa đổi tập tin)

Đảm bảo lưu thay đổi, dừng postfix, postfix bắt đầu khởi động lại máy chủ SMTP.

Nên hoạt động tốt.

(thêm properties.setProperty ("mail.smtp.localhost", "ourcompany.com "); đối với các thuộc tính cũng giải quyết được vấn đề, nhưng cách giải quyết không phải là khắc phục, khi bạn có thể tìm nguyên nhân gốc, ngay cả khi phải mất vài ngày trong trường hợp của tôi)

+0

Lý do xuống hạng ?! – Arnold

Các vấn đề liên quan