2013-05-23 1 views
2

나는 webmail 시스템을 보유하고 있으며 얼마 동안 몇몇 서버에서 온 이메일에 헤더에 추가 줄 바꿈이 있음을 알게되었습니다.이메일 헤더의 추가 줄 바꿈

처음에는 가끔 Dmarc보고가 Google에서있었습니다. 일주일에 약 1 시간. 그 다음 다른 자동 이메일 Bluebottle. 가끔은 다양한 발신자가 있습니다.

GoogleBluebottle의 줄은 항상 같은 위치에 있습니다. 나머지는 그렇지 않습니다. 그게 문제 야. 나는 같은 곳에서 오는 것들을 고치기 위해 좋은 regex을 달릴 수 있지만, 다른 사람들에게는 믿음을 유혹하고 더 많은 해를 입히는 것을 좋아하지 않을 것입니다.

대다수 제공자는 대개이 문제에 신경 쓰지 않지만 걱정하고 싶습니다.

나는 이것을 만들었습니다 regex : (\r[a-z-]*:.*)+(\r\r)+([a-z-]*:.*\r)+ 지금까지는 효과가있는 것처럼 보이지만 문제가 될 수 있다고 생각합니다.

이 정규 표현식은 권장되지 않으므로 누구든지이 문제가 발생하면 의견을 말합니다.

+0

귀하의 우려는 합법적입니다. 너 왜 신경 쓰냐? 여분의 캐리지 리턴이 문제를 일으키는 것입니까? 그리고 어떻게이 정규식을 사용 하시겠습니까? –

+0

잘 사용하기 전에 더 나은 해결책이 있다면 피드백을 받고 싶습니다. 이 문제는 내 전자 메일이 아닌 일반 전자 메일에 있기 때문에 자동 반송, 수신 거부 및 Dmarc 프로세서에서 문제를 일으키는 것입니다. – transilvlad

+1

rfc 822는 각 행 다음에 하나의 CRLF가 있어야하고 message-body 앞에 하나의 CRLF가 있어야한다고 말합니다. 따라서 2 개의 CRLF를 찾으면 나머지는 본문이어야하며 헤더가 있으면 전송 소프트웨어가 응답을하지 않습니다 rfc 822, 정규 표현식에 CR (\ r)을 사용하지 않고 LF (\ n) 만 사용하면 작동하는지, \ n 어디로 이동 했습니까? –

답변

0

1 개월 간의 테스트 후.

이것은 지금까지 문제없이 아주 잘 작동하는 것으로 보입니다.

$data = preg_replace("/(\r\n)([a-z-]*)(:)(.*)(\r\n)(\r\n)([a-z-]*):(.*)(\r\n)/i", "$1$2$3$4$6$7$8$9", $data);