미적분이란?

Study/Deep Learning|2023. 3. 16. 13:00
728x90
반응형

미적분(Calculus)은 함수의 기울기, 변화율, 면적, 부피 등을 다루는 수학 분야입니다. 미적분에서 중요한 개념으로는 미분과 적분이 있습니다.

 

 

  • 미분(Differentiation): 미분은 어떤 함수의 기울기를 구하는 것입니다. 즉, 어떤 점에서의 함수 값이 얼마나 빠르게 변하는지를 측정하는 것입니다. 예를 들어, 자동차의 속도를 측정할 때 시간에 따른 거리의 변화를 알면 속도를 알 수 있습니다. 미분은 이런 속도를 찾는 것과 비슷합니다.
  • 적분(Integration): 적분은 미분과 반대 개념으로, 어떤 크기를 모두 합쳐서 전체적인 결과를 얻는 것입니다. 예를 들어, 자동차의 속도를 알고 있다면 얼마나 멀리 이동했는지 적분을 통해 알 수 있습니다. 적분은 크게 부정적분(Indefinite Integral)과 정적분(Definite Integral) 두 가지로 나뉩니다.
  • 부정적분: 함수의 기울기를 원래 함수로 되돌리는 과정입니다. 적분 상수(C)를 포함하며, 여러 해답이 존재할 수 있습니다.
  • 정적분: 함수 아래의 영역의 면적을 구하는 것입니다. 이를 통해 누적된 총량을 계산할 수 있습니다.

미적분에서는 미분과 적분을 함께 사용하여 함수의 도함수와 원함수를 구할 수 있습니다. 도함수는 원래 함수의 기울기를 나타내며, 원함수는 주어진 함수의 면적을 나타냅니다. 미분과 적분을 이용하여 함수의 극값, 최대값, 최소값 등을 구할 수 있으며, 또한 함수의 연속성, 미분 가능성 등을 파악할 수 있습니다.

 

미적분은 물리학, 공학, 경제학 등 다양한 분야에서 응용되며, 특히 머신러닝 분야에서는 함수의 최적화 문제를 푸는 데에도 사용됩니다. 따라서, 미적분은 현대 과학 및 기술의 발전과 함께 더욱 중요해지고 있습니다.

 

미적분은 두 가지 주요 분야로 나누어집니다: 미분과 적분. 여기 두 가지 예제를 통해 간단한 미적분 문제를 살펴보겠습니다.

 

예제 1: 미분 (Derivative) 함수 f(x) = x^2의 도함수를 구해보겠습니다.


f'(x) f(x)의 기울기를 나타내므로 미분을 사용하여 구할 수 있습니다. 미분 공식 중 x^n의 미분은 nx^(n-1)이므로 이 공식을 사용하면:


f(x) = x^2
f'(x) = 2x^(2-1) = 2x


따라서, 함수 f(x) = x^2의 도함수는 f'(x) = 2x입니다.

 

예제 2: 적분 (Integral) 함수 g(x) = 2x의 부정적분을 구해보겠습니다.


부정적분은 미분과는 반대로 작용하는 연산입니다. 
적분 상수 C를 포함하는 함수 G(x)를 찾는 것이 목표입니다. 
적분 공식 중 nx^n의 적분은 (x^(n+1))/(n+1) + C이므로 이 공식을 사용하면:


g(x) = 2x
G(x) = (2x)dx = 2(x^1)dx = 2(x^(1+1))/(1+1) + C = x^2 + C


따라서, 함수 g(x) = 2x의 부정적분은 G(x) = x^2 + C입니다.

예제 3: 부정적분 (Indefinite Integral) 함수 f(x) = x^2의 부정적분을 구해봅시다.
부정적분은 미분의 반대 작용으로, 미분하기 전의 원래 함수를 찾는 것입니다.
이때 적분 상수 C를 포함합니다. x^n의 적분은 (x^(n+1))/(n+1) + C입니다.

f(x) = x^2
∫f(x)dx = ∫(x^2)dx = (x^(2+1))/(2+1) + C = (x^3)/3 + C

따라서, 함수 f(x) = x^2의 부정적분은 F(x) = (x^3)/3 + C입니다.

 

정적분 (Definite Integral) 함수 g(x) = x^2의 정적분을 구해봅시다.
구간 [0, 2]에서의 면적을 찾으려고 합니다.

정적분은 함수 아래의 영역의 면적을 구하는 것으로, 누적된 총량을 계산할 수 있습니다.
부정적분에서 구한 결과를 이용하여 구간 [a, b]에서의 정적분 값을 구할 수 있습니다.

g(x) = x^2 G(x) = (x^3)/3 + C (부정적분 결과)
구간 [0, 2]에서의 정적분 값은 G(2) - G(0)입니다.

G(2) = (2^3)/3 + C = 8/3 + C
G(0) = (0^3)/3 + C = 0 + C

따라서 정적분 값은: G(2) - G(0) = (8/3 + C) - (0 + C) = 8/3

함수 g(x) = x^2의 구간 [0, 2]에서의 정적분 값은 8/3입니다.
이 값은 함수 아래의 영역 면적을 나타냅니다.

 

 

 

 

 

 

 

728x90
반응형

'Study > Deep Learning' 카테고리의 다른 글

딥러닝 공부를 위해 확률과 통계 개념 파악  (0) 2023.03.24
vscode tensorflow install 오류  (0) 2023.03.20
선형대수의 개념  (0) 2023.03.16
딥러닝 학습방법 및 공부방법  (0) 2023.03.15
Deep Learning 구조도  (0) 2019.05.13

댓글()

선형대수의 개념

Study/Deep Learning|2023. 3. 16. 12:58
728x90
반응형

 

선형대수는 벡터와 행렬을 이용한 수학 분야입니다. 여기서 벡터는 크기와 방향이 있는 양을 나타내는 것이고, 행렬은 숫자들이 직사각형 모양으로 배열된 것입니다.

예를 들어, 2차원 평면상의 벡터는 크기와 방향을 가진 화살표로 표현할 수 있습니다. 이때, 화살표의 길이는 벡터의 크기를 나타내고, 방향은 벡터의 방향을 나타냅니다.

 

행렬은 숫자들이 직사각형 모양으로 배열된 것으로, 예를 들어 3행 2열의 행렬은 다음과 같이 생겼습니다.

 

sharpCopy code
[1 2]
[3 4]
[5 6]

 

이때, 첫 번째 행렬의 첫 번째 열은 1, 3, 5이고, 두 번째 열은 2, 4, 6입니다.

 

선형대수에서는 벡터와 행렬 간에 연산이 가능합니다. 예를 들어, 두 벡터를 더하거나 뺄 수 있습니다. 이때, 더하거나 뺀 벡터는 두 벡터의 크기와 방향을 합친 것이 됩니다. 또한, 행렬과 벡터의 곱을 통해 새로운 벡터를 만들거나, 행렬과 행렬의 곱을 통해 새로운 행렬을 만들 수 있습니다.

 

선형대수에서는 역행렬이라는 개념도 사용됩니다. 역행렬은 주어진 행렬과 곱하면 항등행렬이 되는 행렬을 말합니다. 이를 이용하면 선형 연립 방정식을 풀 수 있습니다.

 

이러한 개념들을 이용하여, 데이터를 분석하거나 머신러닝 모델을 만들 수 있습니다. 따라서, 선형대수는 데이터 분석 분야에서 중요한 개념 중 하나입니다.

 

728x90
반응형

'Study > Deep Learning' 카테고리의 다른 글

vscode tensorflow install 오류  (0) 2023.03.20
미적분이란?  (0) 2023.03.16
딥러닝 학습방법 및 공부방법  (0) 2023.03.15
Deep Learning 구조도  (0) 2019.05.13
Machine Learning 용어 정리  (0) 2019.04.17

댓글()

딥러닝 학습방법 및 공부방법

Study/Deep Learning|2023. 3. 15. 17:35
728x90
반응형

 

딥러닝 공부를 시작하려면 여러 가지 주제와 기술을 차근차근 이해해야 합니다. 다음과 같은 순서로 공부해보시길 추천합니다.

  1. 기본 수학 지식 쌓기: 딥러닝을 이해하려면 선형 대수학, 미적분학, 확률 및 통계 등의 기본 수학 지식이 필요합니다. 이러한 수학 지식은 딥러닝 알고리즘의 원리를 이해하고 구현하는 데 도움이 됩니다.
  2. 프로그래밍 언어 익히기: 딥러닝 모델을 구현하려면 프로그래밍 언어를 익혀야 합니다. Python은 딥러닝 분야에서 가장 널리 사용되는 언어입니다. Python의 기본 문법과 데이터 처리, 함수, 클래스 등을 익히세요.
  3. 기계 학습 개론: 딥러닝은 기계 학습의 한 분야입니다. 지도 학습, 비지도 학습, 강화 학습 등 기계 학습의 주요 개념과 알고리즘에 대해 학습하세요.
  4. 딥러닝 개론: 딥러닝의 기본 개념과 원리, 다양한 인공 신경망의 구조와 작동 원리를 이해하세요. 주요 개념으로는 인공 신경망, 역전파 알고리즘, 손실 함수, 최적화 방법 등이 있습니다.
  5. 딥러닝 프레임워크 익히기: TensorFlow, PyTorch, Keras 등의 딥러닝 프레임워크를 익혀 모델 구현 및 훈련에 익숙해지세요. 이러한 프레임워크는 딥러닝 모델을 쉽게 구축하고 효율적으로 학습할 수 있도록 도와줍니다.
  6. 다양한 딥러닝 아키텍처 학습: 딥러닝 분야에서 널리 사용되는 다양한 아키텍처를 공부하세요. CNN(Convolutional Neural Networks), RNN(Recurrent Neural Networks), LSTM(Long Short-Term Memory), GAN(Generative Adversarial Networks) 등의 주요 아키텍처를 이해하고 사용해 보세요.
  7. 실습 프로젝트 수행: 이론을 배운 후에는 실제 문제를 해결하는 프로젝트를 진행해보세요. 이미지 분류, 자연어 처리, 음성 인식 등 다양한 분야에서 딥러닝 모델을 적용해보며, 실력을 향상시키세요. 실제 데이터셋을 사용하고 프로젝트를 완성하면서 모델 튜닝, 최적화 기법, 과적합 방지 등의 딥러닝 기술을 익히게 됩니다.
  8. 논문 리뷰: 최신 딥러닝 연구와 기술을 이해하려면 학술 논문을 읽어보세요. 논문을 읽으면서 연구자들이 어떤 문제를 해결하려고 하는지, 어떤 방법을 사용했는지, 그리고 어떤 결과를 얻었는지를 이해하려고 노력하세요. 이 과정에서 새로운 아이디어와 기술을 얻을 수 있습니다.
  9. 커뮤니티 참여: 딥러닝 공부를 하면서 다양한 온라인 커뮤니티에 참여하세요. GitHub, Stack Overflow, Reddit 등에서 다른 사람들의 질문에 답변하거나 질문을 올려보세요. 또한, 관련 세미나나 워크숍, 학회 등에 참석하여 전문가들의 강연을 듣고 네트워킹을 통해 지식과 경험을 공유하세요.
  10. 지속적인 학습: 딥러닝은 빠르게 발전하는 분야입니다. 새로운 기술과 알고리즘, 아키텍처 등이 계속해서 등장하므로, 항상 최신 동향을 파악하고 공부를 지속적으로 해야 합니다. 관련 온라인 강좌, 블로그, 유튜브 채널, 팟캐스트 등 다양한 자료를 활용하여 지식을 업데이트하세요.

딥러닝을 공부하는 과정에서는 인내와 끈기가 필요합니다. 위의 단계를 차근차근 따라가면서 꾸준히 노력하면, 결국 딥러닝 전문가로 성장할 수 있습니다.

 

화이팅입니다.

728x90
반응형

'Study > Deep Learning' 카테고리의 다른 글

vscode tensorflow install 오류  (0) 2023.03.20
미적분이란?  (0) 2023.03.16
선형대수의 개념  (0) 2023.03.16
Deep Learning 구조도  (0) 2019.05.13
Machine Learning 용어 정리  (0) 2019.04.17

댓글()

vscode u_char 에러

Study/Coding|2023. 3. 15. 17:22
728x90
반응형

 

 

컴파일러 경로를 /usr/bin/gcc-10 을 선택해 주면 해결되거나

 

typedef unsigned char u_char;

로 설정해주면 에러 해결됨

728x90
반응형

'Study > Coding' 카테고리의 다른 글

FT232R USB UART 문제 해결방법  (25) 2014.10.23

댓글()

[무료음악/음원] 다운로드 사이트

Information/Issues|2022. 12. 23. 23:30
728x90
반응형

무료음악/음원 다운로드 사이트 

 

유튜브 / 인스타 / 틱톡 등 음원이 필요할때 저작권 신경 쓰지 않고 다운로드 받을 수 있는 사이트

 

점점 업데이트 해야겠네요.

 

1. 공유마당(현재 여기서만 다운로드)

https://gongu.copyright.or.kr/gongu/wrt/wrtCl/listWrtSound.do?menuNo=200020

 

음악(목록) | 공유 마당

 

gongu.copyright.or.kr

여기에서 기증 저작물을 선택하여 다운로드 하시면 됩니다. 

로그인도 필요없고 바로 듣고 다운로드 할 수 있으며, 저작권에 대한 정보도 바로 확인할 수 있습니다. 

 

728x90
반응형

댓글()

ChatGPT 아시나요?

Study/Technology Issues|2022. 12. 12. 13:07
728x90
반응형

https://chat.openai.com/chat

 

 

 

네이버 지식인과 같이 궁금한 질문에 대해 답변을 해주는 chat 기능입니다. 

 

 

 

궁금해서 간단하게 질문을 해보았는데... 답변이 의외로 자세히 나오네요~

 

문제는 너무 사용자가 많은것 같습니다.  아니면 서버가 뒷받침이 안되나봐요~

 

메뉴는 총 4가지가 있는데 

 

reset Thread는 초기화로 처음으로 다시 돌아가는거고.. 

 

Light mode는 배경 변경 시 사용합니다. 

 

OpenAI discord 는 discord로 연결 할 수 있으며 봇을 사용할 수 있게 되어 있네요~ 나중에 api 활용 시 좋을 것 같습니다. 

 

나머지는 뭐 질의와 로그 아웃으로 되어 있네요~ㅎ

 

지금도 계속 질의를 남기고 있는데 request가 너무 많아 답변을 안해줘요~ㅠㅠ

728x90
반응형

댓글()

PC에서 스마트폰 원격제어(멀티원격제어)

Information/IT Information|2022. 12. 9. 10:11
728x90
반응형

집에서 스마트폰으로 모바일 게임하시는 분들이 많으십니다. 

 

여러대를 구동하려고 하는데 PC사양이 안좋아서 구동이 안될때가 있죠? 

 

휴대폰을 PC에서 원격제어하기에 가장 좋은툴이 scrcpy 인것 같습니다. 

 

아래의 링크에서 다운로드를 하시구요!! 

 

https://github.com/Genymobile/scrcpy/releases/download/v1.24/scrcpy-win64-v1.24.zip

 

다운로드를 하셨다면 휴대폰 1개 원격제어 및 2개 원격제어 설명 시작하겠습니다.!!

 

1. [휴대폰 설정] 설정에 들어가셔서 개발자 모드로 바꿔주세요!

 

개발자 모드는 설정 -> 휴대폰 정보 -> 소프트웨어 정보 -> 빌드번호를 여러번 눌러주시면 됩니다. 

 

개발자 모드가 활성화 되었다면 다시 설정에 들어가셨을때 아래의 메뉴를 보실 수 있습니다. 

 

그 다음으로 USB 디버깅 모드를 켜 주시면 핸드폰 설정은 완료하였습니다. 

 

 

2. 다운로드 한 파일을 압축을 풀어주세요!!

 

 

압축을 풀면 위와 같이 파일 리스트가 나오는데 여기서 scrcpy를 더블 클릭하시면 컴퓨터에 연결되어 있는 휴대폰을 원격제어 하실 수 있으실 거예요!!

 

scrcpy 원격제어

 

전 오딘 게임을 하는데 공기계 휴대폰 2개를 사용하고 있습니다. ㅎㅎ

 

그럼 한대를 더 연결해야하는데 scrcpy를 한번더 실행한다고 똑같이 실행이 안되죠? 

이때는 기기정보를 확인하고 컴퓨터와 새로운 핸드폰 기기와 강제로 연결해야 합니다. 

 

3. [멀티 원격제어] 새로운 핸드폰 연결

먼저 새로운 공기계를 개발자 모드 활성화 해주신 뒤 USB 디버깅 모드를 ON 해주셔야 합니다. 

 

그 이후에 윈도우+R 을 눌러 실행창을 띄워 cmd 를 입력하시고 엔터를 치시면 명령 프롬프트가 실행되요~

 

 

이런 화면이죠? 그럼 압축을 풀었던 폴더로 이동하셔야 하는데요~ 

 

같은 C드라이브에 압축을 푸셨다면 

 

C:\> cd <폴더 주소>

다른 드라이브에 있다면 먼저 

 

C:\> D:  <엔터>

D:\> cd <폴더주소> 

로 변경하시면 됩니다. 

 

이렇게 폴더 안으로 들어오셨다면 기기를 먼저 검색하셔야 합니다. 

 

>>  adb devices -l 

를 입력하시면 아래와 같이 연결되어 있는 기기목록이 나옵니다. 

 

 

그럼 리스트가 나오는데 이러한 리스트를 먼저 메모장과 같은 곳에 복사를 해두셔야 합니다. (따로따로)

 

다음으로 폴더에서 텍스트문서를 하나 만드세요. 

 

저는 아래와 같이 device no1.bat 파일로 변경하였습니다. <확장자만 txt 에서 bat으로 바꿔주시면 되요>

만약 .bat으로 바꿨는데도 텍스트 문서로 되어 있다면 

 

 

보기에 가셔서 파일 확장명 클릭하시고 .txt 파일명을 삭제하시면 됩니다. 

 

다음으로 파일 우클릭 하셔서 편집하시면 메모장으로 파일이 열리는걸 확인하실 수 있습니다. 

 

여기에 아래와 같이 작성해주신 뒤 저장 하시면 됩니다. 

 

scrcpy -S --disable-screensaver --show-touches -t --stay-awake -w --serial (복사해 놓은 기기 시리얼번호)

 

괄호는 넣으시면 안되요!!

 

제껀 

scrcpy -S --disable-screensaver --show-touches -t --stay-awake -w --serial R3#########   (이런형식으로 되어있습니다)

 

이렇게 완료하신 뒤 저장 하시고 실행시키시면 휴대폰 원격제어가 되실거예요~~

 

다음은 똑같은 방법으로 device no2.bat 파일을 만드시고~ 위의 명령어를 작성하신 뒤~~ 시리얼 번호만 새로운 휴대폰 번호를 넣으시면???

 

 

저와같이 두개의 휴대폰을 동시에 원격제어하실 수 있어요~

 

이상 투투아빠였습니다.ㅎ 

 

 

728x90
반응형

'Information > IT Information' 카테고리의 다른 글

구글 AdMob 접속 불가  (0) 2023.04.05
chatGPT 다운? 접속 불가?  (0) 2023.03.20

댓글()

AttributeError: module 'tensorflow' has no attribute 'variable'

Study/Coding_Python|2019. 9. 4. 10:59
728x90
반응형

AttributeError: module 'tensorflow' has no attribute 'variable'

 

위의 에러가 나와서 현재 작업들을 진행 해봄

 

 

tensorflow 지우기

 

pip uninstall tensorflow

 

tensorflow 다시 설치하기

 

pip install tensorflow

 

설치중 

 

WARNING: You are using pip version 19.1.1, however version 19.2.3 is available.

You should consider upgrading via the 'python -m pip install --upgrade pip' command.

 

이게 떠서 다시 설치를 진행함

 

 

---------------------------------

 

문제는 keras와 tensorflow의 동일한 버전으로 구현이 안되는데 다시 설치하면 된다네요. 

 

저는 keras를 설치 안해서 그런것 같아요

 

pip install --upgrade pip setuptools wheel

 

pip install -I tensorflow

 

pip install -I keras

 

위와 같이 진행을 하고 있습니다...만

 

ERROR: astroid 2.2.5 requires typed-ast>=1.3.0; implementation_name == "cpython", which is not installed.

 

이게 나오고

 

Installing collected packages: gast, numpy, wheel, six, grpcio, werkzeug, setuptools, protobuf, absl-py, markdown, tensorboard, termcolor, h5py, keras-applications, wrapt, astor, google-pasta, tensorflow-estimator, keras-preprocessing, tensorflow

 

이게 나오고

 

ERROR: Operation cancelled by user

 

이렇게 나오네요....

 

728x90
반응형

댓글()

qmil 설치방법

Study/Technology Issues|2019. 9. 3. 15:06
728x90
반응형

qmail이 무엇인가?

큐메일은 기존의 sendmail 을 대체하는 메일 전송 에이전트( MTA )로써 보다 안정적이며 속도 향상을 가져다 줄 수 있습니다. 기존의 sendmail 에서 할 수 없었던 많은 기능이 포함되어 있습니다.

주요기능

- 무한정 도메인과 pop 메일 아이디를 발급 할 수 있습니다.

- 한 개의 시스템 계정생성으로 모든 버츄얼 도메인, pop 계정을 만들수 있습니다.

- 불필요한 유저 생성을 막을 수 있습니다. (보안적인 측면에 유리합니다.)

- 각 도메인마다 메일 계정, 메일링 리스트의 한계를 설정 할 수 있다.

- 웹인터페이스로 메일 추가, 삭제, 메일링 및 각 도메인에 대한 메일 관리가 가능합니다.

- 유저별 quota 설정이 가능합니다. 

- 각 도메인 관리자가 자기 도메인의 메일 계정 추가 삭제가 가능합니다.

- 가상 메일 없이도 도메인마다 똑같은 사용자 계정을 만들 수 있습니다.

위의 내용은 웹호스팅용 메일 시스템으로 아주 유리한 기능들이며 이밖에 다양한 기능들을 내포하고 있습니다.

필요한 프로그램 및 다운로드 사이트

qmail-1.03.tar.gz (http://cr.yp.to)

ucspi-tcp-0.88-man.tar.gz (http://cr.yp.to/ucspi-tcp/install.html)

daemontools-0.76-man.tar.gz (http://cr.yp.to/daemontools/install.html)

vpopmail-5.2.1.tar.gz (http://inter7.com/vpopmail)

qmailadmin-1.0.6.tar.gz (http://inter7.com/qmailadmin)

autorespond-2.0.2.tar.gz (http://inter7.com/qmailadmin)

ezmlm-0.53.tar.gz (http://www.ezmlm.org)

ezmlm-idx-0.40.tar.gz (http://www.ezmlm.org)

qmail-smtpd-auth-0.31.tar.gz (http://members.elysium.pl)

qmail-103.patch (http://cr.yp.to)

설치환경

버전 : CentOS 4.3

qmil 설치파일 다운로드 경로 : /root

( 1 ) 다운로드

qmail 설치에 필요한 파일들을 다운로드 합니다.

wget은 웹에서 자동적으로 파일을 받아오는데 사용되는 유틸리티이며 HTTP, HTTPS, FTP 프로토콜을 지원합니다.

① qmail-1.03.tar.gz 다운로드

[root@nextline ~]# wget http://cr.yp.to/software/qmail-1.03.tar.gz

 

② ucspi-tcp-0.88.tar.gz 다운로드

[root@nextline ~]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

 

③ daemontools-0.76.tar.gz 다운로드

[root@nextline ~]# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz

 

④ vpopmail-5.2.1.tar.gz 다운로드

[root@nextline ~]# wget http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz

 

⑤ qmailadmin-1.0.6.tar.gz 다운로드

[root@nextline ~]# wget http://www.inter7.com/qmailadmin/qmailadmin-1.0.6.tar.gz

 

⑥ autorespond-2.0.2.tar.gz 다운로드

[root@nextline ~]# wget http://www.inter7.com/devel/autorespond-2.0.2.tar.gz

 

⑦ ezmlm-0.53.tar.gz 다운로드

[root@nextline ~]# wget http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/ezmlm-0.53.tar.gz

 

⑧ ezmlm-idx-0.40.tar.gz 다운로드

[root@nextline ~]#wget http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/ezmlm-idx-0.40.tar.gz

 

⑨ qmail-smtpd-auth-0.31.tar.gz 다운로드

[root@nextline ~]# wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz

 

⑩ qmail-1.03.patch 다운로드

[root@nextline ~]# wget http://www.ckdhr.com/ckd/qmail-103.patch

 

( 2 ) qmail 설치

① qmail-1.03.tar.gz 파일의 압축을 해제합니다.

[root@nextline ~]# tar zxvf qmail-1.03.tar.gz

 

② qmail-smtpd-auth-0.31.tar.gz 파일의 압축을 해제합니다.

[root@nextline ~]# tar zxvf qmail-smtpd-auth-0.31.tar.gz

 

③ qmail-stmp-auth-0.31 패치

qmail-smtpd-auth-0.31 디렉토리로 이동합니다.

[root@nextline ~]# cd qmail-smtpd-auth-0.31

qmail-smtpd-auth-0.31 패치 파일을 qmail-1.03 디렉토리로 복사합니다.

[root@nextline qmail-smtpd-auth-0.31]# cp README.auth base64.c

base64.h ../qmail-1.03

qmail-1.03를 패치합니다.

[root@nextline qmail-smtpd-auth-0.31]# patch -d ../qmail-1.03 < auth.patch

 

④ dns 패치

qmail-1.03 디렉토리로 이동합니다.

[root@nextline ~]# cd qmail-1.03

qmail-1.03.patch 패치를 적용합니다.

[root@nextline qmail-1.03]# patch -p1 < ../qmail-103.patch

 

⑤ qmail 디렉토리 및 INSTALL.ids 파일 편집

qmail이 설치될 디렉토리를 생성합니다.

[root@nextline qmail-1.03]# mkdir /var/qmail

vi 에디터 사용법

사용형식 : vi [옵션] [생성할 파일명/편집할 파일명]

vi 에디터는 입력모드, 명령모드, 실행모드로 구분됩니다.

입력모드 : vi 편집화면에서 문자를 입력할 수 있는 모드로서 입력모드로 진입하기 위해서는 i, a, o, I, A, O, R등이 있습니다. 즉 초기 vi 편집기 모드는 명령어 모드로 진입을 하기때문에 문자를 입력하기 전에 앞의 단축키 중 하나를 먼저 입력해야 원하는 문자를 입력할 수 있습니다.

명령모드 : 커서이동/문자삭제/문자()교체/문자열검색 등을 할수 있는 모드로서 입력모드에서 편집이 완료되면 Esc키를 눌러 명령모드로 진입하면 됩니다.

x : vi 명령모드에서 커서위치의 한 문자 삭제

dw : vi 명령모드에서 커서위치의 한단어 삭제

dd : vi 명령모드에서 커서위치의 행 삭제

Ndd : vi 명령모드에서 커서위치의 여러행 동시 삭제

실행모드 : 특별한 명령어를 실행하는 모드로서 명령어모드에서 ":"(콜론)를 누르면 vi 화면 하단 좌측에 vi 특수명령어를 입력할 수 있습니다.

실행모드의 일반적으로 쓰이는 특수 명령어

q : 수정 작업이 이루어지지 않은 상태에서 vi 편집기에서 빠져나옵니다.

q! : 수정 작업이 이루어진 부분을 적용시키지 않고 vi 편집기를 강제로 빠져나옵니다.

w : 수정된 작업을 저장합니다.

wq : 수정된 작업을 저장하고 vi 편집기에서 빠져나옵니다.

초기 명령어모드 -> 입력모드진입 -> 편집 -> 명령어모드 -> 실행모드 -> 종료

qmail 계정 및 그룹을 생성하기 위해 INSTALL.ids 파일을 편집합니다. 아래와 같이 리눅스에 해당하는 라인을 제외하고는 모두 삭제 합니다.

INSTLL.ids파일을 편집합니다. 아래와 같이 Linux 부분을 제외한 나머지 부분을 삭제한 후 저장하고 vi에디터를 빠져나옵니다.

[root@nextline qmail-1.03]# vi INSTALL.ids 

 

⑥ qmail 그룹 및 계정생성

sh INSTALL.ids 실행으로 위의 편집한 qmail 그룹 및 계정이 자동 생성됩니다.

[root@nextline qmail-1.03]# sh INSTALL.ids

 

컴파일

[root@nextline qmail-1.03]# make 

 

make 오류 발생시 qmail-1.03.errno.patch패치 파일을 다운로드 하여 패치를 합니다.

qmail 패치파일 다운로드

http://qmail.kldp.org/src/patches/glibc-2.3.1/

 

패치파일 다운로드

오류 해결을 위해 qmail-1.03.errno.patch 패치 파일을 다운로드 합니다.

[root@nextline qmail-1.03]# wget http://qmail.kldp.org/src/patches/glibc-2.3.1/?id=1687

 

⑨ qmail-1.03.errno.patch 파일로 패치를 적용합니다.

[root@nextline qmail-1.03]# patch –p1 < qmail-1.03.errno.patch

 

⑩ qmail-1.03.errno.patch 패치 후 재 컴파일 합니다.

[root@nextline qmail-1.03]# make

 

설치

[root@nextline qmail-1.03]# make setup check

 

⑫ ./config-fast 도메인

컴파일/설치가 끝나면 기본 control 파일들의 설정을 위해 다음 명령어를 실행합니다.

정상적으로 실행 되었다면 /var/qmail/control/ 안에는 qmail이 정상적으로 작동하기 위한 설정 파일들이 생기게 됩니다.

[root@nextline qmail-1.03]#./config-fast nextline.co.kr

 

⑬ /var/qmail/control 설정화일 확인

[root@nextline qmail-1.03]# ls /var/qmail/control/

 

( 3 ) ucspi-tcp 설치

tcpserver tcpclient TCP 클라이언트-서버 응용 프로그램을 만들기 위한 명령행

도구들의 모음입니다.

① ucspi-tcp-0.88-man.tar.gz 파일의 압축을 해제 합니다.

[root@nextline ~]# tar zxvf ucspi-tcp-0.88.tar.gz

 

컴파일

압축해제된 ucspi-tcp-0.88 디렉토리로 이동합니다.

[root@nextline ~]# cd ucspi-tcp-0.88

ucspi-tcp를 컴파일 합니다.

[root@nextline ucspi-tcp-0.88]# make

 

make: *** [tcpserver] 오류 발생시 ucspi-tcp-0.88.errno.patch 패치를 합니다.

패치파일 다운로드

http://qmail.kldp.org/src/patches/glibc-2.3.1/

③ ucspi-tcp-0.88.errno.patch 패치파일 다운로드

[root@nextlijne ucspi-tcp-0.88]# wget http://qmail.kldp.org/src/patches/glibc-2.3.1/?id=1692

 

④ ucspi-tcp-0.88.errno.patch 패치를 적용합니다.

[root@nextline ucspi-tcp-0.88]# patch -p1 < ucspi-tcp-0.88.errno.patch

 

⑤ ucspi-tcp-0.88.errno.patch 파일 패치 후 재 컴파일 합니다.

[root@nextline ucspi-tcp-0.88]# make

 

설치

[root@nextline ucspi-tcp-0.88]# make setup check

 

( 4 ) daemontools 설치

daemontools는 시스템 서비스를 관리하기 위한 도구들의 모음으로 ucspi-tcp와 같이 사

용하면 inetd/xinetd 같은 구시대 수퍼 데몬을 완전히 대체할 수 있습니다.

① daemontools-0.76.tar.gz 파일의 압축을 해제 합니다.

Daemontools 설치 할 디렉토리를 생성합니다.

[root@nextline ~]# mkdir -p /package

디렉토리 퍼미션을 변경합니다.

[root@nextline ~]# chmod 755 /package/

daemontools-0.76.tar.gz 파일을 /package 디렉토리로 이동합니다.

[root@nextline ~]# cp daemontools-0.76.tar.gz /package/

/package 디렉토리로 이동합니다.

[root@nextline ~]# cd /package/

daemontools-0.76.tar.gz 파일의 압축을 해제 합니다.

[root@nextline package]# tar zxvf daemontools-0.76.tar.gz

 

설치

압축를 해제하면 admin 디렉토리와 daemontools-0.76 디렉토리가 생성됩니다.

admin 디렉토리 하위 daemontools-0.76 디렉토리로 이동합니다.

[root@nextline package]# cd admin/daemontools-0.76/

Package/install 명령으로 daemontoos를 설치합니다.

[root@nextline daemontools-0.76]# package/install

 

make 오류시

make: *** [envdir] 오류 패치를 합니다.

패치파일 다운로드

http://qmail.kldp.org/src/patches/glibc-2.3.1/

③ daemontools-0.76.errno.patch 패치파일을 다운로드 합니다.

[root@nextline daemontools-0.76]# wget http://qmail.kldp.org/src/patches/glibc-2.3.1/?id=1668

 

④ daemontools-0.76.errno.patch 패치를 적용합니다.

[root@nextline daemontools-0.76]# patch -p1 < daemontools-0.76.errno.patch

 

⑤ daemontools-0.76.errno.patch 패치 후 package/install 를 재 실행합니다.

[root@nextline daemontools-0.76]# package/install

 

( 5 ) autorespond 설치

메일의 자동 응답을 해줄 수 있게 하는 프로그램입니다.

압축해제

autorespond-2.0.2.tar.gz 파일이 위치한 /root 디렉토리로 이동합니다.

[root@nextline daemontools-0.76]# cd /root

autorespond-2.0.2.tar.gz 파일의 압축을 해제 합니다.

[root@nextline ~]# tar zxvf autorespond-2.0.2.tar.gz

 

컴파일

압축 해제된 autorespond-2.0.2 디렉토리로 이동합니다.

[root@nextline ~]# cd autorespond-2.0.2

컴파일을 합니다.

[root@nextline autorespond-2.0.2]# make

 

③ autorespond 파일 복사

[root@nextline autorespond-2.0.2]# cp autorespond /usr/local/bin/

 

( 6 ) qmail 데몬을 위한 디렉토리 및 스크립트 파일 생성

스크립트생성

[root@nextline ~]# vi /var/qmail/rc

 

아래의 스크립트를 추가합니다.

#!/bin/sh

exec env - PATH="/var/qmail/bin:$PATH" \

qmail-start ./Maildir/

 

디렉토리 생성 및 퍼미션 변경

생성한 rc 파일의 실행권한을 줍니다.

[root@nextline ~]# chmod a+x /var/qmail/rc

qmail 데몬을 위한 디렉토리와 권한을 줍니다.

[root@nextline ~]# mkdir -p /var/qmail/supervise/qmail-send/log

[root@nextline ~]# mkdir -p /var/qmail/supervise/qmail-smtpd/log

[root@nextline ~]# chmod +t /var/qmail/supervise/qmail-send

[root@nextline ~]# chmod +t /var/qmail/supervise/qmail-smtpd

 

스크립트 생성

[root@nextline ~]# vi /var/qmail/supervise/qmail-send/run

 

아래의 스크립트를 추가합니다.

#!/bin/sh

exec /var/qmail/rc

 

스크립트 생성

[root@nextline ~]# vi /var/qmail/supervise/qmail-send/log/run

 

아래의 스크립트를 추가합니다.

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill \

/usr/local/bin/multilog t /var/log/qmail

 

스크립트 생성

[root@nextline ~]# vi /var/qmail/supervise/qmail-smtpd/run

 

스크립트를 추가합니다.

#!/bin/sh

Q_UID=`id -u vpopmail`

Q_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 7340032 \

/usr/local/bin/tcpserver -vRHl 0 \

-x /home/vpopmail/etc/tcp.smtp.cdb \

-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd nextline.co.kr \

/home/vpopmail/bin/vchkpw /bin/true 2>&1

 

# 주의 : vRHl 0 (L의 소문자, 숫자 0), 인용문자가‘(작은따옴표)가 아니고 `(숫자1옆에 있는 것) 입니다.

스크립트 생성

[root@nextline ~]# vi /var/qmail/supervise/qmail-smtpd/log/run

 

삽입 스크립트

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill \

/usr/local/bin/multilog t /var/log/qmail/smtpd

 

편집한 파일들에 실행권한을 주기 위해 퍼미션를 변경합니다.

[root@nextline autorespond-2.0.2]# chmod 755 /var/qmail/supervise/qmail-send/run

[root@nextline autorespond-2.0.2]# chmod 755 /var/qmail/supervise/qmail-send/log/run

[root@nextline autorespond-2.0.2]# chmod 755 /var/qmail/supervise/qmail-smtpd/run

[root@nextline autorespond-2.0.2]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

 

⑧ qmail-smtpd를 위한 로그 디렉토리 생성 및 소유권 변경

[root@nextline /]# mkdir -p /var/log/qmail/qmail-smtpd

[root@nextline /]# chown qmaill /var/log/qmail/ /var/log/qmail/qmail-smtpd/

 

기본 alias 계정 생성 및 퍼미션변경

[root@nextline alias]# echo postmaster > /var/qmail/alias/.qmail-root

[root@nextline alias]# echo postmaster > /var/qmail/alias/.qmail-postmaster

[root@nextline alias]# echo postmaster > /var/qmail/alias/.qmail-mailer-daemon

[root@nextline alias]# cd /var/qmail/alias/

[root@nextline alias]# chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon

 

⑩ qmail 시동스크립트 생성

[root@nextline ~]# vi /etc/rc.d/init.d/qmail

 

아래의 스크립트를 추가합니다.

#!/bin/sh

# For Red Hat chkconfig

# chkconfig: - 80 30

# description: the qmail MTA

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin

export PATH

case "$1" in

start)

echo "Starting qmail"

if [ -e /service/qmail-send ] ; then

if svok /service/qmail-send ; then

svc -u /service/qmail-send

else

echo qmail-send supervise not running

fi

else

ln -s /var/qmail/supervise/qmail-send /service/

fi

if [ -e /service/qmail-smtpd ] ; then

if svok /service/qmail-smtpd ; then

svc -u /service/qmail-smtpd

else

echo qmail-smtpd supervise not running

fi

else

ln -s /var/qmail/supervise/qmail-smtpd /service/

fi

if [ -d /var/lock/subsys ]; then

touch /var/lock/subsys/qmail

fi

;;

stop)

echo "Stopping qmail..."

echo " qmail-smtpd"

svc -dx /service/qmail-smtpd /service/qmail-smtpd/log

rm -f /service/qmail-smtpd

echo " qmail-send"

svc -dx /service/qmail-send /service/qmail-send/log

rm -f /service/qmail-send

if [ -f /var/lock/subsys/qmail ]; then

rm /var/lock/subsys/qmail

fi

;;

stat)

svstat /service/qmail-send

svstat /service/qmail-send/log

svstat /service/qmail-smtpd

svstat /service/qmail-smtpd/log

qmail-qstat

;;

doqueue|alrm|flush)

echo "Flushing timeout table and sending ALRM signal to qmail-send."

/var/qmail/bin/qmail-tcpok

svc -a /service/qmail-send

;;

queue)

qmail-qstat

qmail-qread

;;

reload|hup)

echo "Sending HUP signal to qmail-send."

svc -h /service/qmail-send

;;

pause)

echo "Pausing qmail-send"

svc -p /service/qmail-send

echo "Pausing qmail-smtpd"

svc -p /service/qmail-smtpd

;;

cont)

echo "Continuing qmail-send"

svc -c /service/qmail-send

echo "Continuing qmail-smtpd"

svc -c /service/qmail-smtpd

;;

restart)

echo "Restarting qmail:"

echo "* Stopping qmail-smtpd."

svc -d /service/qmail-smtpd

echo "* Sending qmail-send SIGTERM and restarting."

svc -t /service/qmail-send

echo "* Restarting qmail-smtpd."

svc -u /service/qmail-smtpd

;;

cdb)

tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp

chmod 644 /home/vpopmail/etc/tcp.smtp.cdb

echo "Reloaded /home/vpopmail/etc/tcp.smtp."

;;

help)

cat <

stop -- stops mail service (smtp connections refused, nothing goes out)

start -- starts mail service (smtp connection accepted, mail can go out)

pause -- temporarily stops mail service (connections accepted, nothing leaves)

cont -- continues paused mail service

stat -- displays status of mail service

cdb -- rebuild the tcpserver cdb file for smtp

restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it

doqueue -- schedules queued messages for immediate delivery

reload -- sends qmail-send HUP, rereading locals and virtualdomains

queue -- shows status of queue

alrm -- same as doqueue

flush -- same as doqueue

hup -- same as reload

HELP

;;

*)

echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"

exit 1

;;

esac

exit 0

 

퍼미션 변경

[root@nextline ~]# chmod 755 /etc/rc.d/init.d/qmail

 

chkconfig ntsysv를 이용한 서비스 자동실행

시스템이 시작할 때 불필요하거나 사용하지 않는 서비스를 실행하지 않게 하는 방법 중 최근에 많이 쓰이는 명령어로 chkconfig가 있습니다. chkconfig 명령어를 이용하면 시스템에 설치되어 있는 모든 서비스 데몬을 확인할 수 있고, 특정 서비스를 쉽게 활성화하거나 해제할 수 있습니다.

[root@nextline ~]# chkconfig --list

시스템에 설치되어 있는 모든 서비스 데몬을 확인할 수 있습니다.

[root@nextline ~]# chkconfig --level 2345 sendmail off

런레벨 2~5에서 sendmail을 해제합니다.

[root@nextline ~]# chkconfig --level 2345 nfs on

런레벨 2~5에서 nfs 서비스를 활성화합니다.

[root@nextline ~]# chkconfig rlogin off

xinetd 기반의 서비스인 rlogin을 해제합니다.

--add --del 스위치를 사용해서 서비스를 추가하거나 삭제할 수 있습니다. chkconfig는 단지 설정 파일을 변경하여, 시스템을 부팅했을 때 해당 서비스 데몬의 실행 여부만 결정하는 것이므로, 다앙 서비스를 시작시키거나 중지시키려면 반드시 service 명령을 사용해야 한다. 참고로 service 명령어는 다음과 같이 사용합니다.

service 서비스명 {start | stop | restart | reloal}

레드햇에는 chkconfig외에도 ntsysv라는 조금은 오래된 툴이 있다. 이 툴은 시스템을 재시작할 때 자동으로 시작할 데몬을 [*]로 체크해서 손쉽게 지정할 수 있다.

⑫ qmail 서비스를 추가합니다.

[root@nextline ~]# chkconfig –-add qmail

ntsysv

ntsysv RunLevel을 조정할 수 있는 편리한 인터페이스를 제공하는 툴입니다.

그냥 쉘 프롬프트에서 ntsysv 라고 입력하면 됩니다. 새로 나온 화면에서 부팅 시

자동으로 띄우고싶은 데몬은 체크를 하면 됩니다.

부팅시 qmail를 자동 실행시키기 위해 ntsysv를 실행합니다.

[root@nextline ~]# ntsysv

 

부팅시 qmail 시작될 수 있도록 [*] qmail 체크를 하고 [확인] 를 눌러 빠져나옵니다.

 

기존의 pop3 데몬을 사용하지 않음으로 설정합니다.

[root@nextline ~]# vi /etc/xinetd.d/pop3

 

아래와 같이 disable = yes 로 설정하면 xinetd를 시작하여도 pop3 데몬이 실행되지 않습니다.

service pop3

{

disable = yes

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/local/lib/popper

server_args = qpopper -s

log_on_failure += USERID

}

( 7 ) vpopmail 설치

vpopmail 은 가상 도메인 추가, 설정, pop 유저 설정과 pop3 데몬등의 기능을 하며 vpopmail이 제대로 작동하려면 vpopmail이 사용할 유저와 그룹을 만들어야 한합니다.

① vpopmail 유저 및 그룹생성

vchkpw 그룹을 생성합니다.

[root@nextline ~]# groupadd vchkpw

vchkpw 그룹에 속한 vpopmail 계정을 생성합니다.

[root@nextline ~]# useradd -g vchkpw vpopmail

이때 생성되는 vpopmail 홈 디렉토리에는 앞으로 추가할 도메인들의 모든 이메일 계정, 메일들이 저장될 곳이므로, 공간이 넉넉한 파티션을 고르는 것이 좋겠다. 다른 파티션을 사용할 것이라면 다음과 같이 할수 있습니다. 디렉토리를 지정하지 않으면 기본 /home파티션에 계정 홈디렉토리가 생성됩니다.

[root@nextline ~]#useradd -g vchkpw -d /원하는/파티션의/디렉토리를/지정 vpopmail

 

② vpopmail-5.2.1.tar.gz 압축을 해제합니다.

[root@nextline ~]# tar zxvf vpopmail-5.2.1.tar.gz

 

③ vmysql.h 편집

mysql vpopmail 메일의 연동을 하지 않으시려면 ③,④번을 적용하지 않습니다.

mysql과 연동하기 위한 설정입니다.

MySQL db를 사용하려 한다면, 컴파일 하기전에 먼저 vmysql.h 를 열어서 sql 서버를 액세스할수 있는 user와 암호등을 설정해 주어야 합니다. vpopmail 상위 버젼에서는 아

래와 같은 라인이 없다면 설치 후 /home/vpopmail/etc/vpopmail.mysql에 설정해 줍니다. 테이블을 생성/삭제 할 수 있는 사용자 이여야하므로 보통 root 나 해당 유저로

설정해 줍니다.

압축 해제된 vpopmail-5.2.1 디렉토리로 이동합니다.

[root@nextline ~]# cd vpopmail-5.2.1

mysql 연동을 위해 vmysql.h 파일을 편집합니다.

[root@nextline vpopmail-5.2.1]# vi vmysql.h

 

아래 부분을 편집합니다.

/* Edit to match your set up */

#define MYSQL_UPDATE_SERVER "localhost"

#define MYSQL_UPDATE_USER "vpopmail" <- mysql 생성 계정명

#define MYSQL_UPDATE_PASSWD "xxxxxx" <- 계정 패스워드

#define MYSQL_READ_SERVER "localhost"

#define MYSQL_READ_USER "vpopmail" <- mysql 생성 계정명

#define MYSQL_READ_PASSWD "xxxxxx" <- 계정 패스워드

/* End of setup section*/

 

④ mysql 계정 생성

위에서 설정한 vmysql.h user와 패스워드를 동일하게 생성하여야 합니다.

vpopmail DB 계정 생성을 위해 mysql에 접속합니다.

[root@nextline ~]# mysql -u root -p

mysql 패스워드를 입력합니다.

Enter password:

mysql 사용자로 로그인 합니다.

mysql> use mysql;

vpopmail 데이터베이스를 생성합니다.

mysql> create database vpopmail;

vpopmail 데이터베이스의 사용자명과 vpopmail계정의 패스워드를 입력합니다.

mysql> grant all privileges on vpopmail.* to vpopmail@"localhost" identified by 'xxxxxx';

위에서 생성한 vpopmail 데이터베이스 정보를 적용합니다.

mysql> flush privileges;

mysql를 빠져나옵니다.

mysql> quit

 

⑤ vpopmail 환경설정 옵션

vpopmail 5.0 이상 버젼은 --enable-large-site 옵션이 --enable-many-domains

으로 바뀌었습니다. , 각 도메인별로 테이블을 생성관리 할 것이라면 --enable-many-domains=n 옵션을 사용합니다.

vpopmail 5.0 이하 버젼은 --enable-large-site=n|y 옵션을 사용할 수도 있는데 이것은, 디폴트로 vpopmail 은 모든 도메인, 유저 정보를 한개의 테이블에서 관리합니다. 만약 각각의 도메인에 많은 메일 유저가 있다면 y로 설정하면, vpopmail은 도메인별로 테이블을 생성,유저 정보를 관리합니다.

--enable-mysql=y 옵션은 mysql과 연동을 위한 옵션입니다. 만약 sql 헤더파일이나 라이브러리를 찾지 못한다며 컴파일에 실패한다면, --enable-sqlincdir= sql 헤더파일 경로. --enable-sqllibdir= sql 라이브러리 경로 등을 ./configure 할때 추가 해줍니다.

예에서 nextline.co.kr 는 주 서버의 도메인 이름이다. 이것을 설정하면 주 서버의 메일 계정도 모두 가상 도메인의 메일 계정과 동일하게 관리 할 수 있다.

--enable-ip-alias-domains=y

ip aliasing을 사용하여 각 도메인마다 각기 다른 ip를 사용할 것이라면 옵션을 추가합니다.

--enable-roaming-users=y

로밍 서비스를 사용할 것이라면 옵션을 추가합니다.

vpopmail pop 서버의 로그 조절 옵션

아무런 옵션을 주지 않고 컴파일 했다면 vpopmail pop서버는 팝 유저들이 어떤 이유로든 로그인을 실패 했을 경우에만 로그를 남깁니다. (/var/log/maillog 또는 /var/log/messages)) 다음과 같은 옵션으로 로그 조절이 가능합니다.

--enable-logging=y : 모든 pop 로그인 기록과 오류 메시지를 남긴다.

--enable-logging=n : 아무런 로그도 남기지 않는다.

--enable-logging=e : 오류/ 치명적인 오류 메세지를 기록한다.

--enable-logging=p : 오류 로그에 암호를 포함한다.

--enable-logging=v : --enable-logging=y 와 같으며 사용자 암호를 로그에 포함한다.

[root@nextline vpopmail-5.2.1]# ./configure --enable-default-domain=nextline.co.kr --enable-mysql=y --enable-

incdir=/usr/local/mysql/include/mysql --enable-libdir=/usr/local/mysql/lib/mysql/ --enable-roaming-users=y --enable-tcprules-prog=/usr/local/bin/tcprules --enable-relay-clear-minutes=15

 

컴파일

[root@nextline vpopmail-5.2.1]# make

 

설치

[root@nextline vpopmail-5.2.1]# make install-strip

 

생성파일 확인

[root@nextline vpopmail-5.2.1]# ls /home/vpopmail/

 

⑨ SMTP 릴레이 설정

vpopmail의 로밍서비스는 고정되어 있지 않은 IP사용자들에게 smtp 릴레이를 지원해 줄수 있는 기능이다. vpopmail은 먼저 POP 메일 유저의 암호를 확인한다음 얼마만큼의 시간동안 그 IP주소의 smtp 릴레이를 열어 놓게 된다. 다음과 같이 기본적인 tcp.smtp 파일을 만든다.

다음 파일에는 qmail smtp 데몬이 메일을 중계(relay)할 주소를 추가합니다.

그외 메일을 중계 해줄 서버의 주소가 있다면 같은 형식으로 추가합니다.

vi /home/vpopmail/etc/tcp.smtp

------------------------------------------

127.0.0.1:allow,RELAYCLIENT=""

xxx.xxx.xxx.xxx:allow,RELAYCLIENT=""

:allow

------------------------------------------

첫 번째와 두번째줄은 메일 서버 내부의 릴레이를 열어 준 것입니다.

릴레이를 전혀 허용하지 않으려면 첫 번째와 두번째 룰만 있으면 됩니다.

xxx.xxx.xxx.xxx:allow,RELAYCLIENT="" 를 예를 들어 설명하면

tcpserver는 해당 ip (xxx.xxx.xxx.xxx)로 부터의 접속을 허용하고 (:allow)

해당 ip에서 접속이 있을 경우 RELAYCLIENT 환경 변수를 설정한 후 qmail-smtpd 를 실행하게 되므로 릴레이가 허용되는 원리 입니다.

마지막 줄의 :allow 는 다른 ip에서의 접속을 허용만 하고 RELAYCLIENT 환경 변수는 설정하지 않습니다.

, 릴레이는 허용하지 않습니다. (기본값이 allow입니다.)

[root@nextline vpopmail-5.2.1]# vi /home/vpopmail/etc/tcp.smtp

 

아래의 스크립트를 추가합니다.

127.0.0.:allow,RELAYCLIENT=""

xxx.xxx.xxx.xxx:allow,RELAYCLIENT="" < - xxx.xxx.xxx.xxx 로컬 ip를 입력합니다.

:allow

 

[root@nextline vpopmail-5.2.1]# tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp

[root@nextline vpopmail-5.2.1]# /home/vpopmail/bin/clearopensmtp

 

cron에 의해 주기적으로 실행되어 릴레이가 허용된 IP 주소 중 pop 인증 시간이 한 시간 이상 된 것이 있으면 지워줍니다. vpopmail 컴파일 시 별다른 옵션을 주지 않았다면 기본적으로 릴레이 허용 시간은 한 시간이며 이것은 --enable-relay-clear-minutes= 옵션으로 바꿔 줄 수 있습니다.

⑩ crontab 등록

 

아래의 스크립트를 추가합니다.

# vpopmail clearopensmtp

40 * * * * /home/vpopmail/bin/clearopensmtp

 

⑪ pop3 시동파일 생성

[root@nextline ~]# mkdir /var/qmail/supervise/vpop

[root@nextline ~]# vi /var/qmail/supervise/vpop/run

 

삽입 스크립트

#!/bin/sh

VPOP_UID=`id -u vpopmail`

VPOP_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 7340032 \

tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \

/var/qmail/bin/qmail-popup nextline.co.kr \

/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1

주의 : 인용문자가‘(작은따옴표)가 이나고 `(숫자1옆에 있는 것) 입니다.

 

⑫ qmail 데몬 시작하기

pop3 시동파일에 실행권한을 줍니다.

[root@nextline ~]# chmod 755 /var/qmail/supervise/vpop/run

만약 이전 sendmail이 아직 전송하지 못한 메일들이 메일 큐에 쌓여 있다면 sendmail -q 를 실행 시켜서 전송을 마쳐 주어야 합니다. 메일이 많이 쌓여 있을 경우 이것은 한번의 실행으로 끝나지 않을 수 도 있습니다.

/etc/rc.d/init.d/sendmail stop 으로 sendmail 데몬을 종료합니다.

[root@nextline ~]# ln -s /var/qmail/supervise/vpop /service

[root@nextline ~]# /etc/rc.d/init.d/sendmail stop

 

기존의 sendmail 바이너리를 qmail 의 것으로 바꿉니다.

[root@nextline ~]# mv /usr/lib/sendmail /usr/lib/sendmail.old

[root@nextline ~]# mv /usr/sbin/sendmail /usr/sbin/sendmail.old

[root@nextline ~]# ln -s /var/qmail/bin/sendmail /usr/lib

[root@nextline ~]# ln -s /var/qmail/bin/sendmail /usr/sbin

qmail를 시동합니다. 이렇게 /service 디렉토리에 링크를 한번 걸어주면 링크가 존재하는 한 즉, 재부팅 한다해도 daemontools에 의해서 자동으로 서비스가 시작됩니다.

[root@nextline ~]# ln -s /var/qmail/supervise/qmail-send /service/

[root@nextline ~]# ln -s /var/qmail/supervise/qmail-smtpd /service/

 

⑬ vpopmail를 이용한 도메인, 메일 계정 추가하기

/home/vpopmail/bin 디렉토리 안에 가상 도메인 관리를 위한 바이너리들이 있는데 다음과 같은 기능을 합니다.

[root@nextline ~]# ls /home/vpopmail/bin/

 

각 바이너리들의 용도

vadddomain

가상 도메인을 추가한다. postmaster 암호를 물어보는데 이것은 다음에 설치할 qmailadmin 웹 인터페이스에서 로그인 할때 물어볼 암호입니다.

vadddomain 도메인명

vdeldomain 가상 도메인과 모든 유저를 삭제합니다.

vdeldomain 도메인명

vadduser pop 메일 유저 계정을 만듭니다.

vadduser test@nextline.co.kr

vdeluser pop 메일 유저를 삭제합니다.

vdeluser test@nextline.co.kr

vpasswd 메일 유저의 암호를 변경합니다.

vpasswd test@nextline.co.kr

vsetuserquota 각 유저 별로 quota 설정을 할 수 있습니다.

vsetuserquota test@nextline.co.kr 51200 (단위는 byte 이다).

vpopbull 서버에 설정되어 있는 모든 유저들에게 한번에 메일을 보낼 때 유용하게 사용 할수 있습니다.

이제 도메인을 추가해 보도록 합니다. 위에서 주 도메인도 vpopmail에서 관리하기로 했다면 주 도메인과 메일 계정들도 추가해야 합니다.

만약 주 도메인이 nextline.co.kr 이고, 추가할 가상 도메인이 nextline1.co.kr, nextline2.co.kr 라고 한다면 다음과 같이 합니다. (추가하기 전에 가상 도메인들의 DNS MX 레코드의 IP주소가 주 서버로 되어있는지 확인 해보자).

./vadddomain nextline.co.kr

./vadddomain nextline1.co.kr

./vadddomain nextline2.co.kr

다음 qmail 설정 파일들이 제대로 바뀌었는지 확인해봅니다. 주 도메인도 vpopmail이 관리하기로 했다면 /var/qmail/control/locals 파일의 내용은 localhost 만이 있어야 정상입니다. qmail smtpd가 이 서버의 것이라고 인식하며 메일을 수신할 도메인들은 다음과 같이 rcpthosts 에 저장될 것입니다.

localhost

nextline.co.kr

nextline1.co.kr

nextline2.co.kr

virtualdomains 파일의 내용입니다.

nextline.co.kr:nextline.co.kr

nextline1.co.kr:nextline1.co.kr

nextline2.co.kr:nextline2.co.kr

/var/qmail/users/assign 의 내용입니다.

+nextline.co.kr-:nextline.co.kr:512:507:/home/vpopmail/domains/nextline.co.kr:-::

+nextline1.co.kr-:nextline1.co.kr:512:507:/home/vpopmail/domains/nextline1.co.kr:-::

+nextline2.co.kr-:nextline2.co.kr:512:507:/home/vpopmail/domains/nextline2.co.kr:-::

필요한 도메인, 메일 계정을 모두 추가하셨다면 qmail를 사용하기 위한 모든 프로그램 설치가 완료되었습니다.

( 8 ) qmail 테스트

ex) 도메인 : nextline.co.kr

계 정 : nextline

① vpopmail을 이용하여 가상도메인 및 유저를 생성해 보겠습니다.

[root@nextline ~]# cd /home/vpopmail/bin

[root@nextline bin]# ls

② nextline.co.kr 도메인을 생성합니다.

[root@nextline bin]# ./vadddomain nextline.co.kr

③ nextline.co.kr 도메인의 패스워드를 입력합니다. 이 패스워드가 qmailadmin에서 해당 도메인으로 접속 할때의 패스워드가 됩니다.

Please enter password for postmaster:

enter password again:

④ nextline 계정을 생성합니다.

[root@nextline bin]# ./vadduser nextline@nextline.co.kr

⑤ nextline 이메일 계정의 패스워드 입니다. 아웃룩 메일 계정 셋팅시 nextline 계정에 대한 패스워드 입니다.

Please enter password for nextline@nextline.co.kr:

enter password again:

 

⑥ Outlook Express 셋팅

아웃룩 익스프레스상에서 위 계정의 메일이 정상 송/수신 되는지 테스트합니다.

 

[도구] – [계정] – [인터넷계정] – [메일] – [추가] – [메일]

[표시이름] : 넥스트라인

[인터넷 전자메일주소] : nextline@nextline.co.kr

[받는메일] : mail.nextline.co.kr

[보내는 메일] : mail.nextline.co.kr

[계정이름] : nextline

[암호] : xxxxxx

[마침]

추가한 메일계정의 속성 탭을 선택합니다.

[속성] – [서버] – [인증필요 체크] –[적용] – [확인] –[닫기]

메일 보내기

[아웃룩 익스프레스] – [메일작성] – [보내기]

아래와 같이 생성한 메일 계정으로 메일을 보냅니다.

 

수신 확인

[배달] – [받은 편지함] 메일이 정상 수신되었습니다.

 

다음은 vpopmail의 웹 인터페이스이며 도메인의 추가,삭제를 제외한 모든 기능을 웹 상에서 할 수 있으며, ezmlm 을 이용한 메일링 리스트 추가, 삭제, 관리까지 할 수 있는 qmailadmin 설치를 하겠습니다.

( 9 ) ezmlm 설치

ezmlm qmail 과 같이 사용할 수 있는 강력한 메일링 리스트입니다.

① ezmlm-0.53.tar.gz 파일의 압축을 해제 합니다.

[root@nextline ~]# tar zxvf ezmlm-0.53.tar.gz

 

② ezmlm-idx-0.40.tar.gz 파일의 압축을 해제 합니다.

[root@nextline ~]# tar zxvf ezmlm-idx-0.40.tar.gz

 

③ ezmlm-idx-0.40 하위의 모든 파일을 ezmlm-0.53 디렉토리로 이동 합니다.

[root@nextline ~]# mv -f ezmlm-idx-0.40/* ezmlm-0.53

압축 해제된 ezmlm-0.53 디렉토리로 이동합니다.

[root@nextline ~]# cd ezmlm-0.53

⑤ idx.patch 패치를 적용합니다.

[root@nextline ezmlm-0.53]# patch < idx.patch

 

컴파일

[root@nextline ~]# make

 

make: *** [ezmlm-idx] 오류1

⑦ make 오류수정

[root@nextline ezmlm-0.53]# vi error.h

 

error.h파일의 아래의 구문를 추가합니다.

#include

 

재 컴파일

[root@nextline ezmlm-0.53]# make

 

⑨ make man

 

설치

[root@nextline ~]# make setup

 

( 9 ) qmailadmin 설치

① qmailadmin-1.0.6.tar.gz 파일의 압축을 해제 합니다.

[root@nextline ~]# tar zxvf qmailadmin-1.0.6.tar.gz

 

압축 해제된 qmailadmin-1.0.6 디렉토리로 이동합니다.

[root@nextline ~]# cd qmailadmin-1.0.6

컴파일 하기위한 환경 설정을 합니다.

--enable-cgibindir

qmailadmin 이 설치될 디렉토리이다. 웹서버가 사용중인 cgi-bin 디렉토리를 적어줍니다. 디폴트는 /usr/local/apache/cgi-bin 입니다.

--with-htmllibdir

qmailadmin html 템플레이트 파일들이 저장될 장소입니다. 그냥 디폴트로 놔두어도 됩니다. (default /usr/local/share/qmailadmin)

--enable-cgipath

사용중인 웹서버의 cgi path /cgi-bin/ 이 아닌 경우 설정해줍니다. 디폴트는 /cgi-bin/qmailadmin 이다.

컴파일을 하기 위한 환경설정을 합니다.

[root@nextline qmailadmin-1.0.6]# ./configure --enable-cgibindir=/usr/local/apache/cgi-bin/

 

컴파일

[root@nextline qmailadmin-1.0.6]# make

 

설치

[root@nextline qmailadmin-1.0.6]# make install-strip

 

⑥ qmailadmin cgi생성 확인

[root@nextline qmailadmin-1.0.6]# ls /usr/local/apache/cgi-bin/

 

⑦ httpd.conf 편집

qmailadmin 설치시 --with-htmllibdir 옵션을 사용하지 않으면 기본 /usr/local/apa

che/htdoc 디렉토리에 images 디렉토리가 생성됩니다.

[root@nextline bin]# vi /usr/local/apache/conf/httpd.conf

 

아래 구문을 VirtualHost부분에 추가합니다.

NameVirtualHost xxx.xxx.xxx.xxx

 

가상 도메인 생성

여기서 생성한 도메인이 qmailadmin 로그인시 사용될 도메인과 패스워드입니다.

가상 도메인 추가를 위해 /home/vpopmail/bin 디렉토리로 이동합니다.

[root@nextline ~]# cd /home/vpopmail/bin

nextline.co.kr 가상 도메인을 생성합니다.

[root@nextline bin]# ./vadddomain nextline.co.kr

Postmaster 패스워드를 입력합니다.

Please enter password for postmaster:

Enter password again:

 

⑨ qmailadmin 한글화

기본 영문으로 되어 있는 언어를 한국어로 변환하기위해 en 파일을 카피하여 해석된 언

어를 ko파일에 추가합니다.

[root@nextline ~]# cd /usr/local/share/qmailadmin/html/

[root@nextline ~]# cp –a en ko

[root@nextline ~]# cat /dev/null > ko

[root@nextline ~]# vi ko

 

한글화 삽입

000 euc-ko

001 메인 메뉴

002 POP 어카운트

003 자동 응답 추가:

004 자동 응답명:

005 오너 메일 주소:

006 건명:

007 전송 어카운트 작성:

008 전송처 메일 주소:

009 로컬 유저명:

010 전송처 메일 주소는 이와 같은 형식이 되군요 안 되는 유저@domain.com

로컬 유저명은 이와 같은 형식이 되군요 안 되는 것:POP 어카운트

, 전송처: joe@test.com 로컬 유저명: sales()라면, sales@##D 앞 모든 메일을 joe@domain.com 전송한다고 함

011 모더레이터 추가

012 모더레이터를 리스트 추가

013 메일 주소:

014 참가자 추가

015 리스트 추가

016 리스트명

017 리스트 오너 주소:

018 어카이브(archive)한다고

019 어카이브(archive) 하지 않는 것

020 어카이브(archive)를 보호할.모더레이터만이 어카이브(archive)가 참조 끝남

021 어카이브(archive)는 참가자 , 보호 설정에 따르며 참조 끝날

022 정리하고 보낼 하지 않았다.정리하고 보내 리스트나 셋업 하지 않는것

023 프리픽스한다고(리스트로부터 메세지 건명 리스트명을 넣는)

024 프리픽스 하지 않는 것

025 어카이브(archive)를 보호할.인식 할 수 없는 것 송신자 요구는 거부함

026 어카이브(archive)를 보호하지 않는 것.송신자가 누구든, 어카이브(archive)를 참조끝남

027 참가로는 승인이 불요

028 참가에는 참가 주소가 메세지를 돌려주는 것에 의한다 승인이 필요

029 Web으로부터 어카이브(archive)를 참조 가능

030 Web 어카이브(archive) 없음

031 탈퇴가 승인은 불요

032 탈퇴 참가 주소가 메세지를 돌려주는 것에 의한다 승인이 필요

033 remote administration자는 참가자 리스트를 요구 끝나며 참가자 로그를 검색 끝날

034 참가자 리스트는 얻을 수 없는

035 투고로는 승인이 필요

036 투고로는 승인이 불요

037 모더레이터 의외로부터 투고는 거부 당할.이것은 승인이 필요한 리스트만 유효

038 거부는 당하고 않는.승인이 필요한 리스트에 있어서, 모든 투고는 모

더레이터 전송 당한다고.이 선택사항은 승인이 필요한 리스트에 두며 유효.

039 관리 요구 응답한, 어카이브(archive) 갱신을 허가할

040 remote administration자하게는, 다이제스트 작성, remote

administration, 어카이브(archive) 갱신만 허가(리스트가 이 옵션으로 작성 당했을 때)

041 관리 요구 응답한, 어카이브(archive) 갱신을 허가할

042 remote administration자하게는, 다이제스트 작성, remote

administration, 어카이브(archive) 갱신만 허가(리스트가 이 옵션으로 작성 당했을 때)

043 리퀘스트 주소를 이용 가능하게 하는

044 리퀘스트 주소앞 메세이지를 처리하지 않는 것

045 remote administration한다고

046 remote administration 하지 않는 것

047 참가 승인할

048 참가가 승인은 불요

049 Trailer

050 No trailer

051 유저는 투고만

052 송신자 주소로 제한하지 않는 것

053 SQL 서포트 유효

054 호스트

055 포토

056 유저

057 패스워드

058 데이타베이스

059 테이블

060 추가

061 POP 어카운트

062 어카운트

063 코멘트

064 수정 유저

065 어카운트삭제

066 Catch All어카운트

067 POP 어카운트 추가

068 별명 어카운트

069 별명

070 POP 어카운트

071 수정

072 삭제

073 별명 추가

074 전송 어카운트

075 전송

076 전송 추가

077 자동 응답

078 자동 응답

079 자동 응답 추가

080 메일링리스트

081 리스트

082 삭제

083 참가자추가

084 참가자삭제

085 참가자일람

086 모더레이터추가

087 모더레이터삭제

088 모더레이터일람

089 메일링리스트 추가

090 POP 어카운트 추가

091 패스워드(재입력):

092 실명

093 리스트명

094 참가자명

095 이하 메일링리스트 새로운 유저를 참가 시킬

096 별명 삭제

097 삭제 승인

098 자동 응답 삭제

099 SQL Settings

100 전송 삭제

101 메일링리스트 삭제

102 유저 삭제

103 전송

104 이하 전송합니다:

105 자동 응답 수정

106 이름

107 내용

108 추가 메일 주소

109 수정 유저

110 신패스워드

111 패스워드 변경

112 어카운트

113 도메인

114 로그인

115 리디렉트

116 현재 리디렉트

117 리디렉트를 추가/치환

118 리디렉트를 삭제

119 추가했습니까

120 추가 가능했습니다

121 별명

122 전송

123 리디렉트 일람

124 퀵 링크

125 POP 어카운트 추가

126 별명 추가

127 전송 추가

128 자동 응답 추가

129 메일링리스트

130 바운스가 있었던 것

131 이것으로 일람은 모두입니다.전페이지 돌아 주세요

132 설정

133 Index:

134 Chatch All 설정을 해제

135 전페이지

136 갱신

137 다음 페이지

138 패스워드를 입력하고 주세요

139 POP 어카운트의 패스워드를 변경했습니까

140 패스워드의 변경 실패했습니까

141 유저를 삭제했습니까

142 권한이 있지 않습니다

143 디렉토리 권한 에러

144 파일 권한 에러

145 내부 에러 부정확한 유저입니다

146 리디렉트 할 수 있지 않습니다

147 리디렉트한다고

148 부정확한 메일 주소입니다

149 마지막 엔트리를 삭제 끝났습니다

150 파일 에러

151 행을 삭제했습니까

152 전송명 %s 를 추가했습니까

153 유저명은 존재하지 않습니다

154 별명을 추가했습니까

155 부정확한 조작입니다

156 작성 끝날 별명 최대수에 이르렀던 것

157 작성 끝날 전송 최대수에 이르렀던 것

158 작성 끝날 자동 응답 최대수에 이르렀던 것

159 부정확한 DotQmail 입력 : adddotqmail()

160 부정확한 별명입니다

161 별명을 추가 끝났습니다.실재할 POP 어카운트명을 입력하고 주세요

162 부정확한 POP 어카운트명입니다

163 부정확한 로컬명입니다

164 부정확한 별명 입력 : adddotqmailnow()

165 별명 추가 실패했습니까

166 별명을 추가했습니까

167 별명/전송 %s 삭제 실패했습니까

168 별명/전송 %s 는 삭제 당했습니까

169 리디렉트/전송 삭제 실패했습니까

170 리디렉트/전송을 삭제했습니까

171 에러: 디렉토리를 변경 끝났습니다 %s\n

172 한 번 한사람 밖에 postmaster로서 로그인 끝나지 않습니다 다른 누군

가가 로그인하고 있습니다. 나중에 로그인해 보세요

173 로그인은 끊어졌습니다, 재로그인해 주세요 \n

174 부정확한 자동 응답명입니다

175 그 이름은 이미 사용되고 있습니다.

176 자동 응답명을 입력하여 주세요

177 부정확한 메일 주소 오너입니다

178 건명을 입력하고 주세요

179 송신할 메세지를 무엇인가 입력하고 주세요

180 자동 응답이 추가 당했습니까 자동 응답

181 자동 응답 삭제 실패했습니까

182 자동 응답이 삭제 당했습니까

183 자동 응답이 수정 당했습니까 %s

184 작성 끝날 메일링리스트가 최대수에 이르렀음

185 파일을 삭제 끝났습니다.

186 메일링리스트를 삭제하겠습니까?

187 메일링리스트를 추가하겠습니까?

188 부정확한 메일 리스트명입니다

189 메일링리스트상 메일 주소 리스트

190 리스트 종단

191 메일링리스트상 모더레이터 메일 주소 리스트

192 메인 메뉴에

193 메일링리스트가 메일 주소가 추가 했습니까?

194 메일링리스트가 모더레이터 메일 주소가 추가 했습니까?

195 메일링리스트로부터 참가자 주소가 삭제 했습니까?

196 메일링리스트로부터 모더레이터를 삭제

197 메일링리스트로부터 모더레이터 주소가 삭제 했습니까?

198 부정확한 로그인입니다

199 작성 끝날 POP 어카운트 최대수에 이르렀던 것

200 패스워드가 일치하지 않습니다. 재입력해주세요

201 메모리 부족이 발생하고 있습니다

202 파라미터(parameter):

203 메일 주소는 메일링리스트로부터 삭제 하겠습니까?

204 Go user

205 전달 및 부재 해제

206 Set remote catch all account

207 Set Remote CatchAll

208 Remote CatchAll Address:

209 전달 여부 설정

210 Email 복사본 저장후 전달 설정/해제

211 Email 전달:

212 부재 설정/해제

213 부재중 응답 제목:

214 부재중 응답 내용:

215 Must supply forward address

216 Must supply subject

217 메뉴 새로 고침

218 로그 아웃

219 List Moderators

220 Moderator

Address

221 List Subscribers

222 Subscriber

Address

223 Could not find user

224 (click to modify)

225 Modify Mailing List

226 Mailing list modified successfully

227 Digest

228 Total:

229 unlimited

230 Total Subscribers:

231 No Mailing Lists to Display

232 No Aliases/Forwards to Display

233 No Mail Robots to Display

 

접속 테스트

http://ip/cgi-bin/qmailadmin

 

qmailadmin 로그인 화면

 

qmailadmin pop 계정 추가화면

이와 같이 qmailadmin 웹 인터페이스를 이용하면 가상도메인별 계정 관리가 편리 합니다

 

 


728x90
반응형

댓글()

please first open a folder in order to do advanced debug configuration - VScode

Study/Coding_Python|2019. 8. 28. 00:08
728x90
반응형

#please first open a folder in order to do advanced debug configuration 해결방법

 

Python을 하시다 보면 위의 메시지를 확인하실 수 있습니다. 

 

이는 디버깅할때 문제가 나오는데 맨땅에 시작하다 보니 저도 구글링을 해서 알았네요. 

 

 

먼저 폴더로 열지 않은것이고 두번째 하셔야 할 것이  launch.json을 만드시는 일입니다. 

 

 

 

 

728x90
반응형

댓글()

free ebook site - e-book 무료 다운로드 사이트

Study|2019. 8. 21. 17:48
728x90
반응형

글을 많이 적지는 않고 바로 ebook 사이트들을 적어두겠습니다. 

 

url을 보시면 잘 이해하실 수 있으실거예요. (해외사이트예용)

 

http://en.pudn.com/

불러오는 중입니다...

 

http://www.freebookspot.es/

 

FreeBookSpot | Download e-books for free

 

www.freebookspot.es

 

https://www.free-ebooks.net/

 

Free-eBooks.net | Download free Fiction, Health, Romance and many more ebooks

Natalie Reads: 9 Pages: 23 Published: Aug 2019 Natalie is a romantic novella that, at its core, relates that which was, is, and is to come regarding a young man's quest for love and meaning in his life. Se... Formats: PDF, Epub, Kindle, TXT

www.free-ebooks.net

https://manybooks.net/

 

50,000+ Free eBooks in the Genres you Love | Manybooks

LOTS OF EBOOKS. 100 % FREE Welcome to your friendly neighborhood library. We have more than 50,000 free ebooks waiting to be discovered.

manybooks.net

https://www.getfreeebooks.com/

 

Get Free Ebooks - Download Free Ebooks Legally

 

www.getfreeebooks.com

http://freecomputerbooks.com/

 

Free Computer, Programming, Mathematics, Technical Books, Lecture Notes and Tutorials

FreeComputerBooks.com Free Computer, Mathematics, Technical Books and Lecture Notes, etc. --> Selected New Books How many flights will depart from a particular airport? Click here to find out. --> --> How many runways in a particular airport? Click here to

freecomputerbooks.com

 

http://www.freetechbooks.com/

 

Free / Open Acess Online Computer Science Books, Textbooks, and Lecture Notes

This site lists free online computer science, engineering and programming books, textbooks and lecture notes, all of which are legally and freely available.

www.freetechbooks.com

https://www.scribd.com/

 

Scribd - Read books, audiobooks, and more

The world's largest digital library. Read unlimited* books, audiobooks, magazines,... Access tens of millions of documents. FREE with a 30 day free trial.

www.scribd.com

 

https://www.bookyards.com/en/welcome

 

Free Books - Bookyards.com - Free Online Library

 

www.bookyards.com

 

http://digital.library.upenn.edu/books/

 

The Online Books Page

 

digital.library.upenn.edu

 

원문 서적같은거 찾으실때 유용하십니다. 

728x90
반응형

댓글()

Python 개발시작 2일차

Study/Coding_Python|2019. 6. 20. 14:38
728x90
반응형

파이썬 개발공부를 시작한지 2일차.. 

 

오늘은 뭔가 업무가 많네요.ㅠㅠ 업무 처리하느라 틈틈히 개발 생각을 계속하면서 한줄 한줄 시작해 보고 있습니다. 

 

먼저 google calendar의 소스를 다운 받았어요. 

 

from __future__ import print_function
import datetime
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']

def main():
    """Shows basic usage of the Google Calendar API.
    Prints the start and name of the next 10 events on the user's calendar.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server()
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('calendar', 'v3', credentials=creds)

    # Call the Calendar API
    now = datetime.datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
    print('Getting the upcoming 10 events')
    events_result = service.events().list(calendarId='primary', timeMin=now,
                                        maxResults=10, singleEvents=True,
                                        orderBy='startTime').execute()
    events = events_result.get('items', [])

    if not events:
        print('No upcoming events found.')
    for event in events:
        start = event['start'].get('dateTime', event['start'].get('date'))
        print(start, event['summary'])

if __name__ == '__main__':
    main()
# [END calendar_quickstart]

 

 

위의 소스에 토큰은 없어서 일단 복사해보았습니다. 

 

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp
from PyQt5.QtGui import QIcon



class MyApp(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        exitAction = QAction(QIcon('exit.png'), 'Exit', self)   # 아이콘 exit.png와 'Exit' 라벨을 갖는 하나의 동작 action을 만듬
        exitAction.setShortcut('Ctrl+Q')                        # 단축키를 정할때 사용함
        exitAction.setStatusTip('Exit application')             # 상태바에 나타날 상태팁을 setStatusTip() 메서드를 사용하여 설정
        exitAction.triggered.connect(qApp.quit)                 # 동작을 선택했을때 QApplication위젯의 quit() 메서드에 연결 -> 종료

        self.statusBar()

        menubar = self.menuBar()
        menubar.setNativeMenuBar(False)
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        self.setWindowTitle("Hwan's Application")         # 메뉴툴바 타이틀
        self.move(300, 0)                                 # 위치를 나타냄 (x축, y축)
        self.resize(1500, 1000)                           # 위젯의 크기 단위는 px  
        self.show()                                       # 위젯을 스크린에 보여주는 것임 


    

if __name__ == '__main__':          # __name__ :현재 모듈의 이름이 저장되는 내장 변수 (만약 다른 모듈을 import해서 실행하면 name변수는 다른 모듈이 됨)

    app = QApplication(sys.argv)    # Application 객체생성     
    ex = MyApp()
    sys.exit(app.exec_())
    

 

제 소스는 이렇게 적어 나가고 있어요. 주석을 달면서 ㅎㅎ 뭔가 확실하게 한줄 한줄 알아야 할 것 같아서요. 

 

일단은 이렇게 시작하면서 python designer.exe.를 사용하지 않고, 직접 UI를 하나씩 짜보면서 문제마다 하나씩 해결해 봐야겠습니다. 

 

 

현재까지는 여기까지 진행되었습니다. 

너무 프로그래밍 못한다고 욕하시면 안되요!! ㅠㅠ

 

오늘 저녁에는 다른거라도 업데이트 시켜 나가야겠습니다. ㅎㅎ 

 

이상 투투아빠였습니다. ㅎ

728x90
반응형

댓글()